View a markdown version of this page

Copie dados de um bucket do Amazon S3 para outra conta e região usando o AWS CLI - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Copie dados de um bucket do Amazon S3 para outra conta e região usando o AWS CLI

Appasaheb Bagali e Purushotham G K, Amazon Web Services

Resumo

Esse padrão descreve como migrar dados de um bucket de origem do Amazon Simple Storage Service (Amazon S3) em uma AWS conta para um bucket Amazon S3 de destino em outra AWS conta, na mesma região ou em uma região diferente. Região da AWS

O bucket Amazon S3 de origem permite o acesso AWS Identity and Access Management (IAM) usando uma política de recursos anexada. Um usuário na conta de destino precisa assumir uma função que tenha permissões PutObject e GetObject para o bucket de origem. Finalmente, você copy executa sync comandos para transferir dados do bucket Amazon S3 de origem para o bucket Amazon S3 de destino.

As contas são proprietárias dos objetos que carregam nos buckets do Amazon S3. Se você copiar objetos entre contas e regiões, concederá à conta de destino a propriedade dos objetos copiados. Você pode alterar a propriedade de um objeto alterando sua lista de controle de acesso (ACL) para bucket-owner-full-control. No entanto, recomendamos que você conceda permissões programáticas entre contas à conta de destino, pois ACLs pode ser difícil gerenciar vários objetos.

Atenção

Para este cenário, são necessários usuários do IAM com acesso programático e credenciais de longo prazo, o que representa um risco de segurança. Para ajudar a reduzir esse risco, recomendamos que você forneça a esses usuários somente as permissões necessárias para realizar a tarefa e que você os remova quando não forem mais necessários. As chaves de acesso podem ser atualizadas, se necessário. Para obter mais informações, consulte Atualização das chaves de acesso na documentação do IAM.

Pré-requisitos e limitações

Pré-requisitos

  • Dois ativos Contas da AWS no mesmo ou em diferentes Regiões da AWS.

  • Um bucket Amazon S3 existente na conta de origem. 

  • Se seu bucket Amazon S3 de origem ou destino tiver a criptografia padrão habilitada, você deverá modificar as permissões da chave AWS Key Management Service (AWS KMS). Para obter mais informações, consulte o artigo do AWS re:POST sobre esse tópico.

  • Familiaridade com permissões entre contas.

Limitações

  • Este padrão abrange a migração única. Para cenários que exigem a migração contínua e automática de novos objetos de um bucket de origem para um bucket de destino, você pode usar o Amazon S3 Batch Replication.

  • Esse padrão usa credenciais de sessão (AccessKeyId,SecretAccessKey, eSessionToken) que são temporárias e não persistentes. O carimbo de data e hora de expiração na saída indica quando essas credenciais expiram. A função é configurada com a duração máxima da sessão. O trabalho de cópia será cancelado se a sessão expirar.

Arquitetura

Copiar dados do Amazon S3 para outra conta ou região

Ferramentas

Práticas recomendadas

Épicos

TarefaDescriptionHabilidades necessárias

Criar um usuário do IAM e obter a chave de acesso.

  1. Faça login no Console de gerenciamento da AWS e crie um usuário do IAM que tenha acesso programático. Para obter instruções detalhadas, consulte Como criar usuários do IAM na documentação do IAM. Não há necessidade de anexar nenhuma política para esse usuário.

  2. Gere uma chave de acesso e uma chave secreta para esse usuário. Para obter instruções, consulte Conta da AWS e acesse as chaves na AWS documentação.

AWS DevOps

Criar uma política do IAM baseada em identidade.

Crie uma política baseada em identidade do IAM nomeada S3MigrationPolicy usando as seguintes permissões. Modifique os nomes dos buckets de origem e de destino de acordo com o seu caso de uso. Essa política baseada em identidade permite que o usuário que está assumindo essa função acesse o bucket de origem e o bucket de destino. Para obter instruções detalhadas, consulte Como criar políticas do IAM na documentação do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListObjectsV2", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket", "arn:aws:s3:::amazon-s3-demo-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:ListObjectsV2", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-destination-bucket", "arn:aws:s3:::amazon-s3-demo-destination-bucket/*" ] } ] }
AWS DevOps

Criar um perfil do IAM.

Crie uma função do IAM nomeada S3MigrationRole usando a política de confiança a seguir. Modifique o nome do recurso da Amazon (ARN) do perfil do IAM de destino ou o nome do usuário na política de confiança de acordo com o seu caso de uso. Essa política de confiança permite que o usuário do IAM recém-criado assuma S3MigrationRole. Anexe o criado anteriormenteS3MigrationPolicy. Para obter as etapas detalhadas, consulte Criar um perfil para delegar permissões a um usuário do IAM na documentação do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<destination_account>:user/<user_name>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
AWS DevOps
TarefaDescriptionHabilidades necessárias

Crie e anexe uma política de bucket do Amazon S3.

  1. Faça login na sua conta Console de gerenciamento da AWS de origem e abra o console do Amazon S3.

  2. Escolha seu bucket Amazon S3 de origem e, em seguida, escolha Permissões.

  3. Em Bucket policy (Política de bucket), escolha Edit (Editar).

  4. Cole a seguinte política de bucket. Certifique-se de incluir o Conta da AWS ID da conta de destino e configurar o modelo de política de bucket de acordo com seus requisitos. Essa política baseada em recursos permite que a função S3MigrationRole de destino acesse objetos do Amazon S3 na conta de origem.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:ListObjectsV2", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket/*", "arn:aws:s3:::amazon-s3-demo-source-bucket" ] } ] }
  5. Escolha Salvar.

Administrador de nuvem
TarefaDescriptionHabilidades necessárias

Crie um bucket Amazon S3 de destino.

  1. Faça login na conta Console de gerenciamento da AWS de destino e abra o console do Amazon S3.

  2. Selecione Criar bucket.

  3. Crie um bucket do Amazon S3 de acordo com seus requisitos. Para obter mais informações, consulte Criar um bucket na documentação do Amazon S3. 

Administrador de nuvem
TarefaDescriptionHabilidades necessárias

Configure o AWS CLI com as credenciais de usuário recém-criadas.

  1. Instale a versão mais recente do AWS CLI. Para obter instruções, consulte Instalação ou atualização da versão mais recente do AWS CLI na AWS CLI documentação.

  2. Execute $ aws configure e atualize AWS CLI com a chave de AWS acesso do usuário do IAM que você criou. Para obter mais informações, consulte Configurações e configurações do arquivo de credenciais na AWS CLI documentação.

AWS DevOps

Assuma a função de migração do Amazon S3.

  1. Use o AWS CLI para assumirS3MigrationRole:

    aws sts assume-role \ --role-arn "arn:aws:iam::<destination_account>:role/S3MigrationRole" \ --role-session-name AWSCLI-Session
    nota

    Esse comando gera várias informações. Dentro do bloco de credenciais, você precisa de AccessKeyId, SecretAccessKey, e SessionToken. Este exemplo usa as variáveis de ambiente RoleAccessKeyID, RoleSecretKey e RoleSessionToken. : as credenciais da sessão (AccessKeyId,SecretAccessKey, eSessionToken) são temporárias e não persistentes. O carimbo de data e hora de expiração na saída indica quando essas credenciais expiram. A função é configurada com a duração máxima da sessão. Se as credenciais expirarem, você deverá ligar sts:AssumeRole novamente para obter novas credenciais temporárias.

  2. Criar três variáveis de ambiente para assumir o perfil do IAM. Essas variáveis de ambiente são preenchidas com a seguinte saída:

    # Linux export AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> export AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> export AWS_SESSION_TOKEN=<RoleSessionToken from command output> # Windows set AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> set AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> set AWS_SESSION_TOKEN=<RoleSessionToken from command output>
  3. Confira se você assumiu o perfil do IAM digitando o seguinte comando:

    aws sts get-caller-identity

Para obter mais informações, consulte Como faço para usar o AWS CLI para assumir uma função do IAM?

Administrador da AWS

Copie e sincronize dados do bucket de origem para o bucket de destino.

Depois de assumir a função, S3MigrationRole você pode copiar os dados usando o comando copy (cp) ou synchronize (sync).

Cópia:

aws s3 cp s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Sincronizar:

aws s3 sync s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Administrador de nuvem

Solução de problemas

ProblemaSolução

Ocorreu um erro (AccessDenied) ao chamar a ListObjects operação

  1. Certifique-se de que você assumiu o perfil S3MigrationRole.

  2. Execute aws sts get-caller-identity para verificar a função usada. Se a saída não exibir o ARN paraS3MigrationRole, assuma a função do IAM novamente e tente novamente.

Recursos relacionados