Componer objetos

Descripción general

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 segmentos, consulta Definir y gestionar políticas de gestión de identidades y accesos en segmentos.

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 y SOURCE_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.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& destination_object_name,
   std::vector<gcs::ComposeSourceObject> const& compose_objects) {
  StatusOr<gcs::ObjectMetadata> composed_object = client.ComposeObject(
      bucket_name, compose_objects, destination_object_name);
  if (!composed_object) throw std::move(composed_object).status();

  std::cout << "Composed new object " << composed_object->name()
            << " in bucket " << composed_object->bucket()
            << "\nFull metadata: " << *composed_object << "\n";
}

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.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;

public class ComposeObjectSample
{
    public void ComposeObject(
        string bucketName = "your-bucket-name",