Cloud Storage admite la transmisión de datos a un segmento sin necesidad de que los datos se guarden primero en un archivo. Esto resulta útil cuando quieres subir datos, pero no sabes el tamaño final al inicio de la subida, por ejemplo, cuando generas los datos de subida a partir de un proceso o cuando comprimes un objeto sobre la marcha.
Usar la validación de suma de comprobación al transmitir
Como solo se puede proporcionar una suma de comprobación en la solicitud inicial de una subida, a menudo no es viable usar la validación de la suma de comprobación de Cloud Storage al transmitir contenido. Te recomendamos que uses siempre la validación de suma de comprobación. Puedes hacerlo manualmente una vez que se haya completado la subida de la transmisión. Sin embargo, si validas los datos después de que se haya completado la transferencia, los datos dañados estarán accesibles durante el tiempo que se tarde en confirmar que están dañados y en eliminarlos.
Si necesitas validar la suma de comprobación antes de que se complete la subida y de que se pueda acceder a los datos, no debes usar una subida en streaming. Deberías usar otra opción de subida que realice la validación de la suma de comprobación antes de finalizar el objeto.
Roles obligatorios
Para obtener los permisos que necesitas para transmitir subidas, pide a tu administrador que te asigne uno de los siguientes roles:
En el caso de las subidas que incluyan un bloqueo de conservación de objetos, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de objetos de Storage (
roles/storage.objectAdmin
) para el segmento.En el resto de los casos, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Usuario de objetos de Storage (
roles/storage.objectUser
) para el segmento.
Estos roles predefinidos contienen los permisos necesarios para transmitir subidas a Cloud Storage. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
storage.objects.create
storage.objects.delete
- Este permiso solo es necesario para las subidas que sobrescriben un objeto.
storage.objects.list
- Este permiso solo es necesario para usar la CLI de Google Cloud para seguir las instrucciones de esta página.
storage.objects.setRetention
- Este permiso solo es necesario para las subidas que incluyan un bloqueo de conservación de objetos.
También puedes obtener estos permisos con otros roles predefinidos o roles personalizados.
Para obtener información sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores.
Emitir una subida
En los ejemplos siguientes se muestra cómo realizar una subida en streaming desde un proceso a un objeto de Cloud Storage:
Consola
La consola no admite las subidas en streaming. Google Cloud Usa la CLI de gcloud.
Línea de comandos
Transfiere los datos al comando
gcloud storage cp
y usa un guion para la URL de origen:PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Donde:
PROCESS_NAME
es el nombre del proceso del que recoges datos. Por ejemplo,collect_measurements
.BUCKET_NAME
es el nombre del contenedor que contiene el objeto. Por ejemplo,my_app_bucket
.OBJECT_NAME
es el nombre del objeto que se crea a partir de los datos. Por ejemplo,data_measurements
.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Para realizar una subida por streaming, utilice uno de los siguientes métodos:
Una subida reanudable con los siguientes ajustes:
Cuando suba los datos del archivo, utilice una subida de varios fragmentos.
Como no sabrá el tamaño total del archivo hasta que llegue al último fragmento, utilice un
*
para el tamaño total del archivo en el encabezadoContent-Range
de los fragmentos intermedios.Por ejemplo, si el primer fragmento que subes tiene un tamaño de 512 KiB, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si a tu subida le quedan 64.000 bytes después del primer fragmento, envías un fragmento final que contiene los bytes restantes y tiene un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
Una subida con una sola solicitud, con los siguientes ajustes:
Incluye el
Transfer-Encoding: chunked
encabezado y excluye elContent-Length
encabezado.Crea la solicitud según la especificación y envía los datos del objeto en fragmentos a medida que estén disponibles.
API XML
Para realizar una subida por streaming, utilice uno de los siguientes métodos:
Una subida reanudable con los siguientes ajustes:
Cuando suba los datos del archivo, utilice una subida de varios fragmentos.
Como no sabrá el tamaño total del archivo hasta que llegue al último fragmento, utilice un
*
para el tamaño total del archivo en el encabezadoContent-Range
de los fragmentos intermedios.Por ejemplo, si el primer fragmento que subes tiene un tamaño de 512 KiB, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si a tu subida le quedan 64.000 bytes después del primer fragmento, envías un fragmento final que contiene los bytes restantes y tiene un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
Una subida con una sola solicitud, con los siguientes ajustes:
Incluye el
Transfer-Encoding: chunked
encabezado y excluye elContent-Length
encabezado.Crea la solicitud según la especificación y envía los datos del objeto en fragmentos a medida que estén disponibles.
Ten en cuenta que no puedes realizar una subida en streaming con este método si la solicitud usa una firma en su encabezado
Authorization
.
Siguientes pasos
- Reproducir una descarga en streaming.
- Consulte más información sobre la transcodificación de descompresión.
- Más información sobre las subidas y descargas