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.
Considerações de custo para objetos temporários
Se os objetos de origem forem temporários, observe as seguintes considerações de custo ao compor objetos:
Os objetos de origem estão sujeitos a durações mínimas de armazenamento, dependendo da classe de armazenamento, e podem gerar taxas de exclusão antecipada.
Se a exclusão reversível ou o controle de versões de objeto estiver ativado, a exclusão dos objetos de origem após a conclusão da composição poderá resultar na exclusão reversível ou na não atualização dos objetos de origem, o que poderá gerar cobranças de armazenamento adicionais.
Para minimizar o faturamento de objetos temporários, exclua-os permanentemente durante o processo de composição usando a opção
deleteSourceObjects. Os objetos excluídos com essa opção não estão sujeitos a taxas de exclusão antecipada. Além disso, os objetos excluídos com essa opção não são preservados pela exclusão reversível ou pelo controle de versões de objeto, porque os dados são preservados no objeto composto.
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.
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.
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.
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.
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.
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.
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.
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.
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.googleapis.com/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.googleapis.com/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.