O blog da AWS

Como usar o AWS DataSync para migrar dados entre buckets do Amazon S3

Por Joe Viggiano, Arquiteto de Soluções Senior na AWS

 

Os clientes, geralmente, precisam mover dados entre buckets do Amazon S3 como parte de suas operações de negócios, processos de consolidação de contas ou para fins de continuidade de negócios. Anteriormente, buckets do S3 com milhões de objetos ou petabytes de dados exigiam a implantação de clusters computacionais para mover dados em escala. Isso não apenas exigia que a infraestrutura fosse implantada e gerenciada, mas também exigia monitoramento contínuo para garantir a conclusão da transferência.

Agora, os dados podem ser movidos facilmente entre buckets S3 para migrações únicas ou transferências agendadas com AWS DataSync , reduzindo a sobrecarga operacional e os custos de infraestrutura. DataSync é uma solução totalmente gerenciada que permite a transferência de dados entre buckets S3 com apenas alguns cliques no console e sem gerenciar qualquer infraestrutura adicional.

Nesta postagem, demonstro a configuração de uma tarefa do AWS DataSync para transferir objetos de um bucket S3 para outro dentro de uma conta AWS, entre regiões AWS e entre contas AWS diferentes sem a necessidade de implantar um agente DataSync no Amazon EC2 .

 

Copiar objetos dentro da mesma conta Amazon S3

Faça login no AWS Management Console , navegue até a página DataSync, selecione Tasks na barra de menu à esquerda e escolha Create task . Para o local de origem, selecione Create a new location e , na lista suspensa Location type, selecione Amazon S3.

 

 

Seleccione a sua Region, S3 bucket, S3 storage class e Folder. Para a IAM Role , selecione o botão Autogenerate .

 

 

Para o local de destino, selecione Create a new location e, na lista suspensa Location type, selecione Amazon S3.

 

 

Selecione a sua Region, S3 bucket , S3 storage class e Folder. Para a IAM role, selecione o botão Autogenerate.

 

 

Dê um nome à sua tarefa e configure-a de acordo com suas especificações. Quando terminar, escolha Next :

 

 

Por último, revise suas configurações e selecione Create Task. Agora você está pronto para executar sua tarefa e começar a copiar objetos. Observe que os custos de transferência de dados do S3 entre regiões ainda se aplicam. Essa metodologia também pode ser aplicada para transferir objetos entre buckets S3 dentro da mesma região.

 

Copiar objetos entre contas

Ao usar o DataSync para copiar objetos entre buckets S3 em contas diferentes, você precisará criar as IAM Roles necessárias na conta onde o bucket de destino está localizado. Isto permitirá que o DataSync transfira os objetos para o bucket de destino ao mesmo tempo que define o proprietário correto do objeto.

Faça login na conta de destino e crie uma IAM Role para que o serviço AWS DataSync acesse objetos no bucket de origem. Ao criar a nova IAM Role, em Select type of trusted entity, selecione AWS service e, em Choose a use case, selecione EC2 e clique no botão Next: Permissions.

 

 

Na tela seguinte, clique em Create Policy, e anexe uma nova IAM Policy com os dados do bucket de origem:

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::SOURCEBUCKET"
        },
        {
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:PutObjectTagging",
                "s3:GetObjectTagging",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::SOURCEBUCKET/*"
        }
    ]
}

Então, após a criação da nova IAM Role, adicione a seguinte trust relationship:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "datasync.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Nas etapas subsequentes, você precisará executar um comando por meio do AWS CLI para criar a localidade do bucket de origem para o DataSync (a configuração de uma localidade de contas cruzadas não está disponível atualmente no console do AWS DataSync). Anote o ARN do usuário IAM ou Role (de destino) que você usará para criar a localidade do DataSync no AWS CLI e insira-o na Policy abaixo. Copie o ARN da IAM Role que você criou para a DataSync acessar o bucket de origem. Agora, faça login na conta de origem. Abra a Bucket Policy do bucket de origem e aplique a seguinte Policy para conceder permissões para a IAM Role acessar os objetos:

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BucketPolicyForDataSync",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                "arn:aws:iam::DEST-ACCOUNT-ID:role/DEST-ACCOUNT-ROLE",
                "arn:aws:iam::DEST-ACCOUNT-ID:role/DEST-ACCOUNT-USER"]
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:GetObjectTagging",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCEBUCKET",
                "arn:aws:s3:::SOURCEBUCKET/*"
            ]
        }
    ]
}

Agora, inicie o AWS CLI e confirme que você está usando a mesma identidade IAM que você especificou na Policy do bucket de origem criada na etapa anterior. Por exemplo, se você estiver usando um Access Key ID e um Secret Access Key com AWS CLI, isso mapeia para o usuário IAM. No AWS CLI, digite o seguinte comando para obter o ARN da identidade que está sendo utilizada:

aws sts get-caller-identity

Caso você não tenha o AWS CLI instalado em seu computador local, ele pode ser facilmente acessado por meio do AWS CloudShell . Agora, execute o comando abaixo para criar a localidade de destino do DataSync:

aws datasync create-location-s3 --s3-bucket-arn arn:aws:s3:::SOURCEBUCKET --s3-config

'{"BucketAccessRoleArn":"arn:aws:iam::DEST-ACCOUNT-ID:role/DEST-ACCOUNT-ROLE"}'

Se o comando for executado com êxito, você obterá um resultado semelhante ao seguinte:

{

"LocationArn": "arn:aws:datasync:Region:DEST-ACCOUNT-ID:location/loc-xxxxxxxxxxxxxx"

}

Agora que a localidade do bucket de origem foi criada, faça login na conta de destino, crie a localidade do bucket de destino e selecione Autogenerate para criar a IAM Policy para esta localidade:

 

 

Depois de criar as localidades de origem e de destino, navegue até Tasks, no menu DataSync, e selecione Create task. Primeiro, selecione o local de origem e, em seguida, selecione Próximo :

 

 

Em seguida, selecione o local de destino:

 

 

Dê um nome à sua tarefa e configure o restante de acordo com suas especificações. Quando terminar, escolha Próximo :

 

Por fim, revise suas configurações e selecione Create task . Agora você está pronto para executar sua tarefa e começar a copiar objetos do bucket de origem para o de destino.

 

Conclusão

Nesta postagem, explorei uma configuração passo a passo de uma tarefa do DataSync que copia objetos de um bucket do S3 para outro sem implantar um agente no EC2. Etapas adicionais forneceram orientação sobre como configurar tarefas para casos de uso entre regiões e contas.

Os clientes podem se beneficiar da migração fácil de dados entre buckets S3 sem gerenciar infraestrutura adicional, economizando tempo operacional e reduzindo a complexidade de mover dados em qualquer escala. Experimente migrar objetos entre seus próprios buckets do Amazon S3 usando AWS DataSync, hoje.

 

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre o autor

Joe Viggiano é arquiteto de soluções sênior e ajuda empresas de mídia e entretenimento a acelerar a adoção de soluções baseadas em nuvem.

 

 

 

 

 

 

Sobre o tradutor

Danilo Silveira é Arquiteto de Soluções Enterprise na AWS. Com 20 anos de experiência em TI, atuou em empresas como Oracle, Algar e IBM. Hoje, trabalha com os clientes da AWS na jornada de adoção da nuvem usando sua experiência em containers e banco de dados.

 

 

 

 

Sobre os revisores

Peterson Larentis é Arquiteto de Soluções na AWS responsável por criar soluções que ajudem os clientes a executar cargas de trabalho na nuvem e evangelizador de práticas ágeis de desenvolvimento de software.

 

 

 

 

 

Samuel Sousa é Arquiteto de Soluções especialista em Storage na AWS para a América Latina. Ele possui mais de 10 anos de experiência na área de arquitetura de soluções focado especificamente no armazenamento, gerenciamento, proteção e recuperação de dados. Juntou-se ao time da AWS em 2020 e, desde então, vem ajudando os clientes a migrar e a otimizar suas cargas de trabalho na nuvem.