Esta página descreve objetos compostos que você cria a partir de objetos existentes sem transferir dados de objetos adicionais. Objetos compostos são úteis para criar anexos em um objeto atual, bem como recriar objetos que você fez o upload como vários componentes em paralelo.
Operação de composição
A operação de composição concatena os dados em uma determinada sequência de objetos de origem para criar um novo objeto chamado objeto composto. Todos os objetos de origem precisam:
- Ter a mesma classe de armazenamento .
- Ser armazenados no mesmo bucket do Cloud Storage.
Ao executar uma composição:
- Os objetos de origem não são afetados.
- É possível usar entre 1 e 32 objetos de origem.
- Os próprios objetos de origem podem ser objetos compostos.
Objeto composto que resulta de uma composição:
- tem a mesma classe de armazenamento que os objetos de origem;
- não muda se os objetos de origem são substituídos ou excluídos posteriormente.
Ao usar a gcloud storage
para realizar a composição do objeto, o objeto resultante
tem um Content-Type
definido para corresponder ao Content-Type
do primeiro objeto de
origem.
Metadados do objeto composto
Há várias diferenças entre os metadados de um objeto composto e aqueles de outros objetos:
Os objetos compostos não têm um campo de metadados de hash MD5.
O valor ETag de um objeto composto não é baseado em um hash MD5, e o código cliente não deve fazer suposições sobre ETags de objetos compostos, exceto que eles mudam sempre que o objeto subjacente é alterado pela especificação IETF para HTTP/1.1.
Cada objeto composto tem um campo de metadados de contagem de componentes, que conta o número de objetos não compostos contidos nele.
- Se você reescrever um objeto composto para um local ou classe de armazenamento diferente, o resultado será um objeto composto com uma contagem de componentes igual a 1.
Como fazer verificação de integridade de objetos compostos
O Cloud Storage usa o CRC32C para verificar a integridade de cada objeto de origem no momento do upload e para permitir que o autor da chamada execute uma verificação de integridade do objeto composto resultante quando o download dele é feito. O CRC32C é um código de detecção de erros que pode ser calculado com eficiência a partir dos valores CRC32C dos componentes dele. O aplicativo usará o CRC32C da maneira a seguir:
- Ao fazer upload de objetos de origem, calcule o CRC32C de cada objeto usando uma biblioteca de CRC32C, como uma das listadas na página de metadados do objeto, e inclua esse valor na solicitação. Com base nos valores inseridos, o Cloud Storage valida cada upload.
- A operação de composição verifica automaticamente se os objetos de origem estão montados corretamente e ignora todos os valores CRC32C fornecidos como parte da solicitação de composição. Uma CRC32C do objeto composto resultante é retornada na resposta.
- Se o aplicativo puder alterar objetos de origem entre o momento de fazer o upload e compor esses objetos, defina nomes específicos de geração para os objetos de origem para evitar disputas. Como alternativa, é possível criar um valor CRC32C com base nos valores CRC32C dos objetos de origem pretendidos e compará-lo ao valor CRC32C retornado pela operação de composição.
- No momento do download, calcule o CRC32C do objeto baixado e o compare com o valor incluído na resposta.
Anexação e edição limitadas
É possível usar a operação de escrita para executar edições e anexos limitados de objetos.
Você anexa fazendo upload de dados para um objeto temporário novo, compondo o objeto que quer anexar com esse objeto temporário, nomeando opcionalmente a saída da operação de composição igual ao objeto original e excluindo o objeto temporário.
Por exemplo, na CLI gcloud, a série de comandos para
anexar a string new data
a um objeto atual do Cloud Storage é a seguinte:
$ echo 'new data' | gcloud storage cp - gs://bucket/temporary_object $ gcloud storage objects compose gs://bucket/object_to_append gs://bucket/temporary_object \ gs://bucket/object_to_append $ gcloud storage rm gs://bucket/temporary_object
Você também pode usar composição para dar suporte a uma versão básica de edição de objetos. Por exemplo, é possível compor um objeto X com a sequência {Y1, Y2, Y3}, substituir o conteúdo de Y2 e recompor X a partir desses mesmos componentes. Isso exige que Y1, Y2 e Y3 não sejam excluídos, por isso você será cobrado por esses componentes e pelo objeto composto como um todo.
A seguir
- Compor um objeto.
- Saiba mais sobre os uploads compostos paralelos.
- Saiba mais sobre os uploads em várias partes, uma maneira alternativa de fazer o upload de objetos em várias partes para usuários da API XML.