Nesta página, mostramos como compor vários objetos do Cloud Storage em um único objeto. Uma solicitação de composição usa entre 1 e 32 objetos e cria um novo objeto composto. O objeto composto é uma concatenação dos objetos de origem na ordem em que foram especificados na solicitação.
Os objetos de origem não são afetados, a menos que você decida excluí-los durante o processo de composição.
Funções exigidas
Para receber as permissões necessárias para compor objetos, peça ao administrador para conceder a você o papel de IAM de Usuário de objetos do Storage (roles/storage.objectUser)
no bucket. Esse papel predefinido contém as
permissões necessárias para compor objetos. Para conferir as permissões exatas
necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
storage.objects.createstorage.objects.delete- Essa permissão só será necessária se você quiser dar ao objeto que está compondo o mesmo nome de um objeto que já existe no bucket.
storage.objects.getstorage.objects.list- Essa permissão só será necessária se você quiser usar caracteres curinga para compor objetos com um prefixo comum sem precisar listar cada objeto separadamente no comando da CLI do Google Cloud.
Se você quiser definir uma configuração de retenção para o objeto
que criar, também precisará da permissão storage.objects.setRetention. Para receber essa permissão, peça ao administrador para conceder a você o papel Administrador de objetos
do Storage (roles/storage.objectAdmin), em vez do papel de Usuário de objetos
do Storage (roles/storage.objectUser).
Também é possível conseguir essas permissões com outros papéis predefinidos ou personalizados.
Para informações sobre como conceder papéis nos buckets, consulte Definir e gerenciar políticas do IAM em buckets.
Criar um objeto composto
Linha de comando
Use o 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_NAMEEm que:
BUCKET_NAMEé o nome do bucket que contém os objetos de origem.SOURCE_OBJECT_1eSOURCE_OBJECT_2são os nomes dos objetos de origem a serem usados na composição do objeto.COMPOSITE_OBJECT_NAMEé o nome que você atribui ao resultado da composição do objeto.
Para excluir os objetos de origem como parte do processo de composição, inclua a flag --delete-source-objects no comando anterior.
Bibliotecas de cliente
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
C#
Saiba mais na documentação de referência C# da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Go
Saiba mais na documentação de referência Go da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Java
Saiba mais na documentação de referência Java da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Node.js
Saiba mais na documentação de referência Node.js da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
PHP
Saiba mais na documentação de referência PHP da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Python
Saiba mais na documentação de referência Python da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Ruby
Saiba mais na documentação de referência Ruby da API Cloud Storage.
Para se autenticar no Cloud Storage, configure o Application Default Credentials. Saiba mais em Configurar a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
Rust
APIs REST
API JSON
Tenha a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization.Crie um arquivo JSON com as informações a seguir:
{ "sourceObjects": [ { "name": "SOURCE_OBJECT_1" }, { "name": "SOURCE_OBJECT_2" } ], "destination": { "contentType": "COMPOSITE_OBJECT_CONTENT_TYPE" }, "deleteSourceObjects": DELETE_SOURCE_OBJECTS_BOOLEAN }
Em que:
SOURCE_OBJECT_1eSOURCE_OBJECT_2são os nomes dos objetos de origem a serem usados na composição do objeto.COMPOSITE_OBJECT_CONTENT_TYPEé o tipo de conteúdo do objeto composto resultante.DELETE_SOURCE_OBJECTS_BOOLEANé definido comotruese você quiser excluir os objetos de origem como parte do processo de composição oufalsese quiser manter os objetos de origem. O padrão éfalse.
Use
cURLpara chamar a API JSON com umaPOSTsolicitação de objeto: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"
Em que:
JSON_FILE_NAMEé o nome do arquivo criado na etapa anterior.BUCKET_NAMEé o nome do bucket que contém os objetos de origem.COMPOSITE_OBJECT_NAMEé o nome que você atribui ao resultado da composição do objeto.
Se bem-sucedida, a resposta será um recurso de objeto para o objeto composto resultante.
API XML
Tenha a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization.Crie um arquivo XML que contenha as seguintes informações:
<ComposeRequest> <Component> <Name>SOURCE_OBJECT_1</Name> </Component> <Component> <Name>SOURCE_OBJECT_2</Name> </Component> </ComposeRequest>
Em que:
SOURCE_OBJECT_1eSOURCE_OBJECT_2são os nomes dos objetos de origem a serem usados na composição do objeto.
Use
cURLpara chamar a API XML com umaPUTsolicitação de objeto que inclua o 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.s3nsapis.fr/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
Em que:
XML_FILE_NAMEé o nome do arquivo criado na etapa anterior.COMPOSITE_OBJECT_CONTENT_TYPEé o tipo de conteúdo do objeto composto resultante.BUCKET_NAMEé o nome do bucket que contém os objetos de origem.COMPOSITE_OBJECT_NAMEé o nome que você atribui ao resultado da composição do objeto.
Se o processo for bem-sucedido, um corpo vazio de resposta será retornado.
A seguir
- Saiba mais sobre composição de objetos.
- Saiba como usar pré-condições de solicitação para evitar disputas.