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 nuevo objeto compuesto. El objeto compuesto es una concatenación de los objetos de origen en el orden en que se especificaron en la solicitud.
Cuando compongas objetos, ten en cuenta lo siguiente:
- Los objetos de origen no se ven afectados por el proceso de composición. Si son temporales, debes eliminarlos una vez que hayas completado la composición.
Roles obligatorios
Para obtener los permisos que necesitas para crear objetos, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Usuario de objetos de Storage (roles/storage.objectUser
) en el segmento. Este rol predefinido contiene los permisos necesarios para crear objetos. 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 si quieres asignar al objeto que compones el mismo nombre que a un objeto que ya existe en el segmento.
storage.objects.get
storage.objects.list
- Este permiso solo es necesario si quieres usar comodines para componer objetos con un prefijo común sin tener que enumerar cada objeto por separado en tu comando de la CLI de Google Cloud.
Si quieres definir una configuración de conservación para el objeto que compongas, también necesitarás el permiso storage.objects.setRetention
. Para obtener este permiso, pide a tu administrador que te conceda el rol Administrador de objetos de Storage (roles/storage.objectAdmin
) en lugar del rol Usuario de objetos de Storage (roles/storage.objectUser
).
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.
Crear 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
Donde:
BUCKET_NAME
es el nombre del segmento que contiene los objetos de origen.SOURCE_OBJECT_1
ySOURCE_OBJECT_2
son los nombres de los objetos de origen que se van a usar en la composición de objetos.COMPOSITE_OBJECT_NAME
es el nombre que le das al resultado de la composición del objeto.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
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.
Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr
a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para 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" } }
Donde:
Usa
cURL
para llamar a la API JSON con una solicitud dePOST
Object:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/COMPOSITE_OBJECT_NAME/compose"
Donde:
JSON_FILE_NAME
es el nombre del archivo que has creado en el paso anterior.BUCKET_NAME
es el nombre del contenedor que contiene los objetos de origen.COMPOSITE_OBJECT_NAME
es el nombre que le das al resultado de la composición del objeto.
Si la solicitud se realiza correctamente, la respuesta es un recurso de objeto del objeto compuesto resultante.
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para 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>
Donde:
SOURCE_OBJECT_1
ySOURCE_OBJECT_2
son los nombres de los objetos de origen que se van a usar en la composición del objeto.
Usa
cURL
para llamar a la API XML con una solicitud dePUT
Object que incluya el parámetro de cadena 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.s3nsapis.fr/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
Donde:
XML_FILE_NAME
es el nombre del archivo que has creado en el paso anterior.COMPOSITE_OBJECT_CONTENT_TYPE
es el Content-Type del objeto compuesto resultante.BUCKET_NAME
es el nombre del contenedor que contiene los objetos de origen.COMPOSITE_OBJECT_NAME
es el nombre que le das al resultado de la composición del objeto.
Si la solicitud se realiza correctamente, se devuelve un cuerpo de respuesta vacío.
Siguientes pasos
- Más información sobre la composición de objetos
- Consulta cómo usar las condiciones previas de las solicitudes para evitar las condiciones de carrera.