Copiar um objeto para um bucket de diretório - Amazon Simple Storage Service

Copiar um objeto para um bucket de diretório

A operação de cópia cria uma cópia de um objeto que já está armazenado no Amazon S3. Você pode copiar objetos entre buckets de diretório e buckets de uso geral. Você também pode copiar objetos dentro de um bucket e entre buckets do mesmo tipo, por exemplo, de um bucket de diretório para outro bucket de diretório.

Você pode criar uma cópia do objeto de até 5 GB em uma única operação atômica. Contudo, para copiar um objeto maior do que 5 GB, você deve usar as operações de API de upload multiparte. Para ter mais informações, consulte Usar uploads multiparte com buckets de diretório.

Permissões

Para copiar objetos, você deve ter as seguintes permissões:

  • Para copiar objetos de um bucket de diretório para outro bucket de diretório, você precisa ter a permissão s3express:CreateSession.

  • Para copiar objetos de buckets de diretório para buckets de uso geral, você precisa ter a permissão s3express:CreateSession e a permissão s3:PutObject para gravar a cópia do objeto no bucket de destino.

  • Para copiar objetos de buckets de uso geral para buckets de diretório, você precisa ter a permissão s3express:CreateSession e a permissão s3:GetObject para ler o objeto de origem que está sendo copiado.

    Para obter mais informações, consulte CopyObject na Referência da API do Amazon Simple Storage Service.

Criptografia

O Amazon S3 criptografa automaticamente todos os novos objetos que são carregados em um bucket do S3. A configuração de criptografia padrão de um bucket do S3 está sempre habilitada e, no mínimo, definida como criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).

Em relação a buckets de diretório, são aceitas a SSE-S3 e a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Quando o bucket de destino é um bucket de diretório, recomendamos que a criptografia padrão do bucket de destino use a configuração de criptografia desejada e você não substitua a criptografia padrão do bucket. Desse modo, os novos objetos são criptografados automaticamente com as configurações de criptografia desejadas. Além disso, não são aceitas chaves de bucket do S3 quando você copia objetos criptografados por SSE-KMS de buckets de uso geral para buckets de diretório, de buckets de diretório para buckets de uso geral ou entre buckets de diretório, por meio de CopyObject. Nesse caso, o Amazon S3 faz uma chamada para o AWS KMS sempre que uma solicitação de cópia é feita para um objeto criptografado pelo KMS. Para ter mais informações sobre os comportamentos de substituição de criptografia em buckets de diretório, consulte Specifying server-side encryption with AWS KMS for new object uploads.

Para buckets de uso geral, você pode usar SSE-S3 (padrão), criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS) ou criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C).

Se você fizer uma solicitação de cópia que especifique o uso da DSSE-KMS ou da SSE-C para um bucket de diretório (o bucket de origem ou de destino), a resposta exibirá um erro.

Tags

Os buckets de diretório não oferecem suporte a etiquetas. Se você copiar um objeto que tenha etiquetas de um bucket de uso geral para um bucket de diretório, receberá uma resposta HTTP 501 (Not Implemented). Para obter mais informações, consulte CopyObject na Referência da API do Amazon Simple Storage Service.

ETags

As etiquetas de entidade (ETags) para a classe S3 Express One Zone são strings alfanuméricas aleatórias e não somas de verificação MD5. Para ajudar a garantir a integridade do objeto, use somas de verificação adicionais.

Somas de verificação adicionais

A classe S3 Express One Zone oferece a opção de escolher o algoritmo de soma de verificação usado para validar os dados durante o upload ou o download. Você pode selecionar um dos seguintes algoritmos de verificação de integridade de dados de hash seguro (SHA) ou de verificação de redundância cíclica (CRC): CRC32, CRC32C, SHA-1 e SHA-256. As somas de verificação baseadas em MD5 não são compatíveis com a classe de armazenamento S3 Express One Zone.

Para ter mais informações, consulte Práticas recomendadas adicionais de soma de verificação do S3.

Atributos compatíveis

Para obter mais informações sobre quais recursos do Amazon S3 são compatíveis com a classe S3 Express One Zone, consulte Noções básicas sobre a diferença do S3 Express One Zone.

nota

As restrições e limitações ao copiar um objeto em um bucket de diretório com o console são as seguintes:

  • A ação Copy se aplica a todos os objetos nas pastas especificadas (prefixos). Os objetos adicionados a essas pastas enquanto a ação estiver em andamento também poderão ser afetados.

  • Objetos criptografados com chaves de criptografia fornecidas pelo cliente (SSE-C) não podem ser copiados usando o console do S3. Para copiar objetos criptografados com SSE-C, use a AWS CLI, o SDK da AWS ou a API REST do Amazon S3.

  • Os objetos copiados não manterão as configurações do Bloqueio de Objetos dos objetos originais.

  • Se o bucket do qual você está copiando os objetos usar a configuração aplicada pelo proprietário do bucket em Propriedade de objetos do S3, as ACLs de objeto não serão copiadas para o destino especificado.

  • Se você quiser copiar objetos para um bucket que usa a configuração aplicada pelo proprietário do bucket em Propriedade de objetos do S3, o bucket de origem também deve usar a configuração aplicada pelo proprietário do bucket ou você deve remover qualquer objeto concedido pela ACL a outras contas e grupos da AWS.

  • Os objetos copiados de um bucket de uso geral para um bucket de diretório não reterão tags de objeto, ACLs ou valores de Etag. Os valores da soma de verificação podem ser copiados, mas não são equivalentes a uma Etag. O valor da soma de verificação pode mudar em comparação com quando foi adicionado.

  • Todos os objetos copiados para um bucket de diretório estarão com a configuração aplicada pelo proprietário do bucket para Propriedade de Objetos do S3.

Como copiar um objeto de um bucket de uso geral ou de diretório para um bucket de diretório
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Buckets.

  3. Escolha o bucket do qual deseja copiar objetos:

    • Para copiar de um bucket de uso geral, escolha a guia Buckets de uso geral.

    • Para copiar de um bucket de diretório, escolha a guia Buckets de diretórios.

  4. Escolha o bucket de uso geral ou de diretório que contém os objetos que você deseja copiar.

  5. Escolha a guia Objetos. Na página Objetos, marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja copiar.

  6. No menu Actions (Ações), escolha Copy (Copiar).

    A página Copiar é exibida.

  7. Em Destino, escolha Bucket de diretório como tipo de destino. Para especificar o caminho de destino, escolha Procurar no S3, navegue até o destino e selecione o botão de opções à esquerda do destino. Escolha Choose destination (Escolher destino) no canto inferior direito.

    Outra alternativa é inserir o caminho de destino.

  8. Em Checksums, escolha se deseja copiar os objetos com suas funções de soma de verificação existentes ou substituí-las por funções novas. Ao carregar os objetos, você teve a opção de especificar o algoritmo de soma de verificação usado para verificar a integridade dos dados. Ao copiar o objeto, você tem a opção de escolher uma nova função. Se você não especificar uma soma de verificação adicional, poderá usar a seção Somas de verificação para adicionar uma.

    nota

    Mesmo se optar por usar a mesma função de soma de verificação, o valor dela poderá mudar se o objeto tiver mais de 16 MB. O valor da soma de verificação pode mudar devido à forma como as somas de verificação são calculadas para carregamentos fracionados. Para obter mais informações sobre como a soma de verificação pode mudar ao copiar esse objeto, consulte Usar somas de verificação de nível parcial para carregamentos fracionados.

    Para alterar a função de soma de verificação, escolha Replace with a new checksum function (Substituir por uma nova função de soma de verificação). Escolha a nova função de soma de verificação na lista suspensa. Quando o objeto é copiado, a nova soma de verificação é calculada e armazenada usando o algoritmo especificado.

  9. Escolha Copy (Copiar) no canto inferior direito. O Amazon S3 copia o objeto no destino.

nota

As restrições e limitações ao copiar um objeto para um bucket de uso geral com o console são as seguintes:

  • A ação Copy se aplica a todos os objetos nas pastas especificadas (prefixos). Os objetos adicionados a essas pastas enquanto a ação estiver em andamento também poderão ser afetados.

  • Objetos criptografados com chaves de criptografia fornecidas pelo cliente (SSE-C) não podem ser copiados usando o console do S3. Para copiar objetos criptografados com SSE-C, use a AWS CLI, o SDK da AWS ou a API REST do Amazon S3.

  • Os objetos copiados não manterão as configurações do Bloqueio de Objetos dos objetos originais.

  • Se o bucket do qual você está copiando os objetos usar a configuração aplicada pelo proprietário do bucket em Propriedade de objetos do S3, as ACLs de objeto não serão copiadas para o destino especificado.

  • Se você quiser copiar objetos para um bucket que usa a configuração aplicada pelo proprietário do bucket em Propriedade de objetos do S3, o bucket de origem também deve usar a configuração aplicada pelo proprietário do bucket ou você deve remover qualquer objeto concedido pela ACL a outras contas e grupos da AWS.

Como copiar um objeto de um bucket de diretório para um bucket de uso geral
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Buckets.

  3. Escolha a guia Buckets de diretórios.

  4. Selecione o bucket de diretório que contém os objetos que você deseja copiar.

  5. Escolha a guia Objetos. Na página Objetos, marque a caixa de seleção à esquerda dos nomes dos objetos que você deseja copiar.

  6. No menu Actions (Ações), escolha Copy (Copiar).

  7. Em Destino, escolha Bucket de uso geral como tipo de destino. Para especificar o caminho de destino, escolha Procurar no S3, navegue até o destino e selecione o botão de opções à esquerda do destino. Escolha Choose destination (Escolher destino) no canto inferior direito.

    Outra alternativa é inserir o caminho de destino.

  8. Em Checksums, escolha se deseja copiar os objetos com suas funções de soma de verificação existentes ou substituí-las por funções novas. Ao carregar os objetos, você teve a opção de especificar o algoritmo de soma de verificação usado para verificar a integridade dos dados. Ao copiar o objeto, você tem a opção de escolher uma nova função. Se você não tiver especificado uma soma de verificação adicional, poderá usar a seção Checksums para adicionar uma.

    nota

    Mesmo se optar por usar a mesma função de soma de verificação, o valor dela poderá mudar se o objeto tiver mais de 16 MB. O valor da soma de verificação pode mudar devido à forma como as somas de verificação são calculadas para carregamentos fracionados. Para obter mais informações sobre como a soma de verificação pode mudar ao copiar esse objeto, consulte Usar somas de verificação de nível parcial para carregamentos fracionados.

    Para alterar a função de soma de verificação, escolha Replace with a new checksum function (Substituir por uma nova função de soma de verificação). Escolha a nova função de soma de verificação na lista suspensa. Quando o objeto é copiado, a nova soma de verificação é calculada e armazenada usando o algoritmo especificado.

  9. Escolha Copy (Copiar) no canto inferior direito. O Amazon S3 copia o objeto no destino.

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

O exemplo de comando copy-object a seguir mostra como é possível usar a AWS CLI para copiar um objeto de um bucket para outro. Você pode copiar objetos entre tipos de bucket. Para executar esse comando, substitua os espaços reservados de entrada por suas próprias informações.

aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

Para obter mais informações, consulte copy-object na Referência de comandos da AWS CLI.