En esta página, se muestra cómo componer objetos de Cloud Storage en un solo objeto. Una solicitud de composición toma entre 1 y 32 objetos y crea un objeto compuesto nuevo. El objeto compuesto es una concatenación de los objetos de origen en el orden en que se especificaron en la solicitud.
Ten en cuenta lo siguiente cuando compones objetos:
- El proceso de composición no afecta a los objetos de origen. Si están destinados a ser temporales, debes borrarlos una vez que hayas completado la composición con éxito.
- Debido a que otras clases de almacenamiento están sujetas a tarifas de eliminación temprana, siempre debes usar Standard Storage para los objetos temporales.
Roles obligatorios
Para obtener los permisos que necesitas a fin de redactar objetos, pídele a tu administrador que te otorgue el rol de IAM de usuario de objetos de almacenamiento (roles/storage.objectUser
) en el bucket. Este rol predefinido contiene los permisos necesarios para redactar objetos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
storage.objects.create
storage.objects.delete
- Este permiso solo es necesario si deseas darle al objeto que compones el mismo nombre que un objeto que ya existe en tu bucket.
storage.objects.get
storage.objects.list
- Este permiso solo es necesario si deseas usar comodines para componer objetos con un prefijo común sin tener que enumerar cada objeto por separado en tu comando Google Cloud CLI.
Si deseas establecer una configuración de retención para el objeto que redactas, también necesitarás el permiso storage.objects.setRetention
. Para obtener este permiso, pídele a tu administrador que te otorgue el rol de administrador de objetos de almacenamiento (roles/storage.objectAdmin
) en lugar de la función de usuario de objetos de almacenamiento (roles/storage.objectUser
).
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.
Crea un objeto compuesto
Línea de comandos
Usa el comando gcloud storage objects compose
:
gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/COMPOSITE_OBJECT_NAME
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene los objetos de origen.SOURCE_OBJECT_1
ySOURCE_OBJECT_2
son los nombres de los objetos de origen que se usarán en la composición del objeto.COMPOSITE_OBJECT_NAME
es el nombre que le asignas al resultado de la composición del objeto.
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
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "sourceObjects": [ { "name": "SOURCE_OBJECT_1" }, { "name": "SOURCE_OBJECT_2" } ], "destination": { "contentType": "COMPOSITE_OBJECT_CONTENT_TYPE" } }
Aquí:
SOURCE_OBJECT_1
ySOURCE_OBJECT_2
son los nombres de los objetos de origen que se usarán en la composición del objeto.COMPOSITE_OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto compuesto resultante.
Usa
cURL
para llamar a la API de JSON con una solicitud de objetoPOST
:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/COMPOSITE_OBJECT_NAME/compose"
Aquí:
JSON_FILE_NAME
es el nombre del archivo que creaste en el paso anterior.BUCKET_NAME
es el nombre del bucket que contiene los objetos de origen.COMPOSITE_OBJECT_NAME
es el nombre que le asignas al resultado de la composición del objeto.
Si se ejecuta de forma correcta, la respuesta es un recurso de objeto para el objeto compuesto resultante.
API de XML
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Crea un archivo XML que contenga la siguiente información:
<ComposeRequest> <Component> <Name>SOURCE_OBJECT_1</Name> </Component> <Component> <Name>SOURCE_OBJECT_2</Name> </Component> </ComposeRequest>
Aquí:
SOURCE_OBJECT_1
ySOURCE_OBJECT_2
son los nombres de los objetos de origen que se usarán en la composición del objeto.
Usa
cURL
para llamar a la API de XML con una solicitud de objetoPUT
y el parámetro de string de consultacompose
:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: COMPOSITE_OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
Aquí:
XML_FILE_NAME
es el nombre del archivo que creaste en el paso anterior.COMPOSITE_OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto compuesto resultante.BUCKET_NAME
es el nombre del bucket que contiene los objetos de origen.COMPOSITE_OBJECT_NAME
es el nombre que le asignas al resultado de la composición del objeto.
Si se ejecuta de forma correcta, se muestra una respuesta vacía.
Próximos pasos
- Obtén más información sobre la composición de objetos.
- Aprende a usar condiciones previas de solicitud para evitar las condiciones de carrera.