Crie uma cópia de um objeto no StorageGRID com a solicitação S3 CopyObject
Você pode usar a solicitação S3 CopyObject para criar uma cópia de um objeto que já está armazenado no S3. Uma operação CopyObject é a mesma que executar GetObject seguido de PutObject.
Resolver conflitos
Solicitações conflitantes de clientes, como dois clientes gravando na mesma chave, são resolvidas com base no princípio "latest-wins". O momento da avaliação do "latest-wins" é determinado quando o sistema StorageGRID conclui uma determinada solicitação, e não quando os clientes S3 iniciam uma operação.
Tamanho do objeto
O tamanho máximo recomendado para uma única operação PutObject é de 5 GiB (5.368.709.120 bytes). Se você tiver objetos maiores que 5 GiB, use "upload multipart" em vez disso.
O tamanho máximo suportado para uma única operação PutObject é de 5 TiB (5.497.558.138.880 bytes).
|
|
Se você atualizou do StorageGRID 11.6 ou anterior, o alerta "Tamanho do objeto S3 PUT muito grande" será acionado se você tentar fazer o upload de um objeto que exceda 5 GiB. Se você tiver uma nova instalação do StorageGRID 11.7 ou 11.8, o alerta não será acionado nesse caso. No entanto, para alinhar com o padrão AWS S3, as versões futuras do StorageGRID não suportarão uploads de objetos maiores que 5 GiB. |
Caracteres UTF-8 nos metadados do usuário
Se uma solicitação incluir valores UTF-8 (sem escape) no nome da chave ou no valor dos metadados definidos pelo usuário, o comportamento do StorageGRID será indefinido.
StorageGRID não analisa nem interpreta caracteres UTF-8 escapados incluídos no nome da chave ou no valor dos metadados definidos pelo usuário. Caracteres UTF-8 escapados são tratados como caracteres ASCII:
-
As solicitações são bem-sucedidas se os metadados definidos pelo usuário incluírem caracteres UTF-8 escapados.
-
StorageGRID não retorna o
x-amz-missing-metacabeçalho se o valor interpretado do nome ou valor da chave incluir caracteres não imprimíveis.
Cabeçalhos de solicitação suportados
Os seguintes cabeçalhos de solicitação são suportados:
-
Content-Type -
x-amz-copy-source -
x-amz-copy-source-if-match -
x-amz-copy-source-if-none-match -
x-amz-copy-source-if-unmodified-since -
x-amz-copy-source-if-modified-since -
x-amz-meta-, seguido por um par nome-valor contendo metadados definidos pelo usuário -
x-amz-metadata-directive: O valor padrão éCOPY, o que permite que você copie o objeto e os metadados associados.Você pode especificar
REPLACEpara sobrescrever os metadados existentes ao copiar o objeto ou para atualizar os metadados do objeto. -
x-amz-storage-class -
x-amz-tagging-directive: O valor padrão éCOPY, que permite copiar o objeto e todas as tags.Você pode especificar `REPLACE`para sobrescrever as tags existentes ao copiar o objeto ou para atualizar as tags.
-
Cabeçalhos da solicitação S3 Object Lock:
-
x-amz-object-lock-mode -
x-amz-object-lock-retain-until-date -
x-amz-object-lock-legal-holdSe uma solicitação for feita sem esses cabeçalhos, as configurações de retenção padrão do bucket serão usadas para calcular o modo de versão do objeto e a data de retenção. Consulte "Use a API REST S3 para configurar o S3 Object Lock".
-
-
Cabeçalhos de solicitação SSE:
-
x-amz-copy-source-server-side-encryption-customer-algorithm -
x-amz-copy-source-server-side-encryption-customer-key -
x-amz-copy-source-server-side-encryption-customer-key-MD5 -
x-amz-server-side-encryption -
x-amz-server-side-encryption-customer-key-MD5 -
x-amz-server-side-encryption-customer-key -
x-amz-server-side-encryption-customer-algorithm
-
Cabeçalhos de solicitação não suportados
Os seguintes cabeçalhos de solicitação não são suportados:
-
Cache-Control -
Content-Disposition -
Content-Encoding -
Content-Language -
Expires -
If-MatchO
If-Match headeré aceito, mas não funcional. -
If-None-MatchO
If-None-Match headeré aceito, mas não funcional. -
x-amz-checksum-algorithmAo copiar um objeto, se o objeto de origem tiver um checksum, StorageGRID não copia esse valor de checksum para o novo objeto. Esse comportamento se aplica independentemente de você tentar usar
x-amz-checksum-algorithmna solicitação do objeto. -
x-amz-website-redirect-location
Opções de classe de armazenamento
O `x-amz-storage-class`cabeçalho da solicitação é compatível e afeta quantas cópias de objetos o StorageGRID cria se a regra ILM correspondente usar o Dual commit ou Balanced "opção de ingestão".
-
STANDARD(Padrão) Especifica uma operação de ingestão de confirmação dupla quando a regra ILM usa a opção Dual commit ou quando a opção Balanced recorre à criação de cópias intermediárias.
-
REDUCED_REDUNDANCYEspecifica uma operação de ingestão de confirmação única quando a regra ILM usa a opção de confirmação dupla ou quando a opção balanceada recorre à criação de cópias intermediárias.
Se você estiver ingerindo um objeto em um bucket com S3 Object Lock ativado, a REDUCED_REDUNDANCYopção será ignorada. Se você estiver ingerindo um objeto em um bucket legado Compliant, aREDUCED_REDUNDANCYopção retornará um erro. StorageGRID sempre realizará uma ingestão com confirmação dupla para garantir que os requisitos de conformidade sejam atendidos.
Usando x-amz-copy-source em CopyObject
Se o bucket e a chave de origem, especificados no x-amz-copy-source cabeçalho, forem diferentes do bucket de destino e da chave de destino, uma cópia dos dados do objeto de origem é gravada no destino.
Se a origem e o destino coincidirem e o x-amz-metadata-directive cabeçalho for especificado como REPLACE, os metadados do objeto serão atualizados com os valores de metadados fornecidos na solicitação. Nesse caso, StorageGRID não reingere o objeto. Isso tem duas consequências importantes:
-
Não é possível usar CopyObject para criptografar um objeto existente no local ou para alterar a criptografia de um objeto existente no local. Se você fornecer o
x-amz-server-side-encryptioncabeçalho ou ox-amz-server-side-encryption-customer-algorithmcabeçalho, StorageGRID rejeita a solicitação e retornaXNotImplemented. -
A opção de Comportamento de Ingestão especificada na regra ILM correspondente não é utilizada. Quaisquer alterações no posicionamento do objeto que sejam acionadas pela atualização são feitas quando o ILM é reavaliado pelos processos ILM normais em segundo plano.
Isso significa que, se a regra ILM usar a opção "Estrita" para o comportamento de ingestão, nenhuma ação será tomada se os posicionamentos de objeto necessários não puderem ser feitos (por exemplo, porque um local recém-necessário não está disponível). O objeto atualizado mantém seu posicionamento atual até que o posicionamento necessário seja possível.
Cabeçalhos de solicitação para criptografia do lado do servidor
Se você "usar criptografia do lado do servidor" fizer isso, os cabeçalhos da solicitação que você fornecer dependerão de o objeto de origem estar criptografado e de você planejar criptografar o objeto de destino.
-
Se o objeto de origem estiver criptografado usando uma chave fornecida pelo cliente (SSE-C), você deverá incluir os três cabeçalhos a seguir na solicitação CopyObject, para que o objeto possa ser descriptografado e copiado:
-
x-amz-copy-source-server-side-encryption-customer-algorithm: especifiqueAES256. -
x-amz-copy-source-server-side-encryption-customer-key: Especifique a chave de criptografia que você forneceu ao criar o objeto de origem. -
x-amz-copy-source-server-side-encryption-customer-key-MD5: Especifique o resumo MD5 que você forneceu ao criar o objeto de origem.
-
-
Se você deseja criptografar o objeto de destino (a cópia) com uma chave exclusiva que você fornece e gerencia, inclua os três cabeçalhos a seguir:
-
x-amz-server-side-encryption-customer-algorithm: EspecifiqueAES256. -
x-amz-server-side-encryption-customer-key: Especifique uma nova chave de criptografia para o objeto de destino. -
x-amz-server-side-encryption-customer-key-MD5: Especifique o hash MD5 da nova chave de criptografia.
As chaves de criptografia fornecidas por você nunca são armazenadas. Se você perder uma chave de criptografia, perderá o objeto correspondente. Antes de usar chaves fornecidas pelo cliente para proteger dados de objetos, revise as considerações para "usando criptografia do lado do servidor". -
-
Se você deseja criptografar o objeto de destino (a cópia) com uma chave exclusiva gerenciada pelo StorageGRID (SSE), inclua este cabeçalho na solicitação CopyObject:
-
x-amz-server-side-encryptionO server-side-encryptionvalor do objeto não pode ser atualizado. Em vez disso, faça uma cópia com um novoserver-side-encryptionvalor usandox-amz-metadata-directive:REPLACE.
-
Controle de versões
Se o bucket de origem for versionado, você pode usar o x-amz-copy-source cabeçalho para copiar a versão mais recente de um objeto. Para copiar uma versão específica de um objeto, você deve especificar explicitamente a versão a ser copiada usando o versionId sub-recurso. Se o bucket de destino for versionado, a versão gerada será retornada no x-amz-version-id cabeçalho da resposta. Se o versionamento estiver suspenso para o bucket de destino, então x-amz-version-id retorna o valor "null".