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.
- Como otras clases de almacenamiento están sujetas a tarifas de eliminación anticipada, siempre debes usar Standard Storage para los objetos temporales.
- Las eliminaciones frecuentes asociadas a la composición pueden aumentar significativamente tu factura de almacenamiento si tu segmento tiene habilitadas las funciones de protección de datos. Plantéate inhabilitar la eliminación no definitiva en los contenedores con altas tasas de operaciones de composición. Con la gestión de versiones de objetos, especifica las versiones de los objetos al eliminar los objetos de origen para eliminarlos de forma permanente y evitar que se conviertan en objetos no actuales.
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.
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
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.googleapis.com/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.googleapis.com/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.