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 por PutObject.
Resolver conflitos
As solicitações de cliente conflitantes, como dois clientes escrevendo para a mesma chave, são resolvidas com base em "vitórias mais recentes". O tempo para a avaliação "últimos ganhos" é baseado em quando o sistema StorageGRID completa uma determinada solicitação e não em quando os clientes S3 começam 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 "carregamento 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 COLOCAR tamanho do objeto muito grande S3 será acionado se você tentar carregar 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 neste caso. No entanto, para se alinhar com o padrão AWS S3, futuras versões do StorageGRID não suportarão uploads de objetos maiores que 5 GiB. |
UTF-8 carateres em metadados do usuário
Se uma solicitação incluir valores UTF-8 (não escapados) no nome da chave ou valor dos metadados definidos pelo usuário, o comportamento do StorageGRID é indefinido.
O StorageGRID não analisa nem interpreta carateres UTF-8 escapados incluídos no nome da chave ou no valor dos metadados definidos pelo usuário. Os carateres UTF-8 escapados são tratados como carateres ASCII:
-
As solicitações são bem-sucedidas se os metadados definidos pelo usuário incluírem carateres UTF-8 escapados.
-
O StorageGRID não retorna o
x-amz-missing-meta
cabeçalho se o valor interpretado do nome ou valor da chave incluir carateres 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 de nome-valor contendo metadados definidos pelo usuário -
x-amz-metadata-directive
: O valor padrão éCOPY
, que permite copiar o objeto e os metadados associados.Você pode especificar
REPLACE
para substituir 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 substituir as tags existentes ao copiar o objeto ou para atualizar as tags. -
S3 cabeçalhos de solicitação de bloqueio de objetos:
-
x-amz-object-lock-mode
-
x-amz-object-lock-retain-until-date
-
x-amz-object-lock-legal-hold
Se uma solicitação for feita sem esses cabeçalhos, as configurações de retenção padrão do intervalo serão usadas para calcular o modo de versão do objeto e manter até a data. "Use a API REST do S3 para configurar o bloqueio de objetos do S3"Consulte .
-
-
Cabeçalhos de pedido 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
-
x-amz-checksum-algorithm
Quando você copia um objeto, se o objeto de origem tiver um checksum, o StorageGRID não copia esse valor de checksum para o novo objeto. Esse comportamento se aplica se você tentar ou não
x-amz-checksum-algorithm
usar na solicitação de objeto. -
x-amz-website-redirect-location
Opções de classe de armazenamento
O x-amz-storage-class
cabeçalho de solicitação é suportado e afeta quantas cópias de objeto criadas pelo StorageGRID se a regra ILM correspondente usar o compromisso duplo ou equilibrado "opção de ingestão".
-
STANDARD
(Padrão) especifica uma operação de ingestão de commit duplo quando a regra ILM usa a opção de commit duplo ou quando a opção Balanced retorna à criação de cópias provisórias.
-
REDUCED_REDUNDANCY
Especifica uma operação de ingestão de commit único quando a regra ILM usa a opção de commit duplo ou quando a opção Balanced retorna à criação de cópias provisórias.
Se você estiver ingerindo um objeto em um bucket com o S3 Object Lock ativado, a REDUCED_REDUNDANCY
opção será ignorada. Se você estiver ingerindo um objeto em um bucket compatível com legado, aREDUCED_REDUNDANCY
opção retornará um erro. A StorageGRID sempre realizará uma ingestão de confirmação dupla para garantir que os requisitos de conformidade sejam atendidos.
Usando x-amz-copy-source em CopyObject
Se o intervalo de origem e a chave, especificados no x-amz-copy-source
cabeçalho, forem diferentes do intervalo de destino e da chave, uma cópia dos dados do objeto de origem será gravada no destino.
Se a origem e o destino corresponderem 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, o StorageGRID não reingere o objeto. Isto 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-encryption
cabeçalho ou ox-amz-server-side-encryption-customer-algorithm
cabeçalho, o StorageGRID rejeita a solicitação e retornaXNotImplemented
. -
A opção de comportamento de ingestão especificada na regra ILM correspondente não é usada. Quaisquer alterações no posicionamento de objetos que são acionadas pela atualização são feitas quando o ILM é reavaliado por processos normais de ILM 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-exigido 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 "use a criptografia do lado do servidor"você , os cabeçalhos de solicitação fornecidos dependem se o objeto de origem está criptografado e se você planeja criptografar o objeto de destino.
-
Se o objeto de origem for criptografado usando uma chave fornecida pelo cliente (SSE-C), você deve 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
: EspecificarAES256
. -
x-amz-copy-source-server-side-encryption-customer-key
: Especifique a chave de criptografia fornecida quando você criou o objeto de origem. -
x-amz-copy-source-server-side-encryption-customer-key-MD5
: Especifique o resumo MD5 que você forneceu quando criou o objeto de origem.
-
-
Se você quiser 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
: EspecificarAES256
. -
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 resumo MD5 da nova chave de criptografia.
As chaves de criptografia que você fornece nunca são armazenadas. Se você perder uma chave de criptografia, perderá o objeto correspondente. Antes de usar chaves fornecidas pelo cliente para proteger os dados do objeto, revise as considerações para "usando criptografia do lado do servidor". -
-
Se você quiser criptografar o objeto de destino (a cópia) com uma chave exclusiva gerenciada pelo StorageGRID (SSE), inclua esse cabeçalho na solicitação de CopyObject:
-
x-amz-server-side-encryption
O server-side-encryption
valor do objeto não pode ser atualizado. Em vez disso, faça uma cópia com um novoserver-side-encryption
valor usandox-amz-metadata-directive
:REPLACE
.
-
Controle de versão
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
subrecurso. Se o intervalo de destino for versionado, a versão gerada será retornada x-amz-version-id
no cabeçalho de resposta. Se o controle de versão estiver suspenso para o bucket de destino, x-amz-version-id
retorna um valor "nulo".