Cloud Storage admite la transmisión de datos a un bucket sin necesidad de que los datos se guarden primero en un archivo. Esto es útil cuando quieres subir datos, pero no sabes cuál es el tamaño final al comienzo de la carga, como cuando se generan los datos de carga de un proceso o cuando se comprime un objeto sobre la marcha.
Usa la validación de la suma de verificación durante la transmisión
Debido a que solo se puede proporcionar una suma de verificación en la solicitud inicial de una carga, a menudo no es factible usar la validación de suma de verificación de Cloud Storage durante la transmisión. Se recomienda que siempre uses la validación de la suma de verificación y puedes hacerlo de forma manual después de que se complete una carga de transmisión. Sin embargo, realizar la validación después de que se complete la transferencia significa que se puede acceder a los datos dañados durante el tiempo que lleva confirmar el daño y quitarlo.
Si necesitas validación de la suma de comprobación antes de que se complete la carga y se puede acceder a los datos, no debes usar una carga de transmisión. Debes usar una opción de carga diferente que realice la validación de la suma de verificación antes de finalizar el objeto.
Roles obligatorios
Para obtener los permisos que necesitas a fin de transmitir cargas, pídele a tu administrador que te otorgue uno de los siguientes roles:
Para las cargas que incluyen un bloqueo de retención de objetos, pídele a tu administrador que te otorgue el rol de IAM de Administrador de objetos de almacenamiento (
roles/storage.objectAdmin
) para el bucket.Para todos los demás casos, pídele a tu administrador que te otorgue el rol de IAM de usuario de objeto de almacenamiento (
roles/storage.objectUser
) para el bucket.
Estos roles predefinidos contienen los permisos necesarios para transmitir cargas a Cloud Storage. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
storage.objects.create
storage.objects.delete
- Este permiso solo es necesario para las cargas que reemplazan un objeto existente.
storage.objects.get
storage.objects.list
- Este permiso solo es necesario para usar Google Cloud CLI a fin de realizar las instrucciones de esta página.
storage.objects.setRetention
- Este permiso solo es necesario para las cargas que incluyen un bloqueo de retención de objetos.
También puedes obtener estos permisos con otros roles predefinidos o roles personalizados.
Para obtener más información sobre cómo otorgar roles en los buckets, consulta Usa IAM con buckets.
Realiza una carga de transmisión
En los siguientes ejemplos, se muestra cómo realizar una carga de transmisión desde un proceso a un objeto de Cloud Storage:
Console
La consola de Google Cloud no admite la carga de transmisiones. En su lugar, usa la CLI de gcloud.
Línea de comandos
Canaliza 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
Aquí:
PROCESS_NAME
es el nombre del proceso desde el que recopilas datos. Por ejemplo,collect_measurements
BUCKET_NAME
es el nombre del bucket 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 cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Para realizar una carga de transmisión, usa uno de los siguientes métodos:
Una carga reanudable, con los siguientes ajustes:
Cuando subas los datos del archivo, usa una carga en varios fragmentos.
Dado que no conoces el tamaño total del archivo hasta llegar al fragmento final, usa 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 512K, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si tu carga tiene 64,000 bytes restantes después del primer fragmento, debes enviar un fragmento final que contenga los bytes restantes y tenga un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
Una carga de solicitud única, con los siguientes ajustes:
Incluye un encabezado
Transfer-Encoding: chunked
y excluye el encabezadoContent-Length
.Crea la solicitud según las especificaciones y envía los datos del objeto en fragmentos a medida que estén disponibles.
API de XML
Para realizar una carga de transmisión, usa uno de los siguientes métodos:
Una carga reanudable, con los siguientes ajustes:
Cuando subas los datos del archivo, usa una carga en varios fragmentos.
Dado que no conoces el tamaño total del archivo hasta llegar al fragmento final, usa 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 512K, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si tu carga tiene 64,000 bytes restantes después del primer fragmento, debes enviar un fragmento final que contenga los bytes restantes y tenga un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
Una carga de solicitud única, con los siguientes ajustes:
Incluye un encabezado
Transfer-Encoding: chunked
y excluye el encabezadoContent-Length
.Crea la solicitud de acuerdo con 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 carga de transmisión si la solicitud usa una firma en su encabezado
Authorization
.
¿Qué sigue?
- Transmite una descarga
- Obtén más información sobre la transcodificación descompresiva.
- Obtén más información sobre cargas y descargas.