DEV Community

Henrique Santos
Henrique Santos

Posted on

Copia de Buckets S3 entre contas AWS

Na conta para qual o Bucket será copiado (Conta de destino)

  • Criar o bucket que irá receber os arquivos copiados.
  • Criar um usuário IAM e coloque a policy abaixo:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<NOME-DO-BUCKET-DE-ORIGEM>",
                "arn:aws:s3:::<NOME-DO-BUCKET-DE-ORIGEM>/*",
                "arn:aws:s3:::<NOME-DO-BUCKET-DE-DESTINO>",
                "arn:aws:s3:::<NOME-DO-BUCKET-DE-DESTINO>/*"
            ]
        }
    ]
}

Enter fullscreen mode Exit fullscreen mode
  • Gere uma credencial programática e a configure em sua maquina ou em uma instância utilizando o AWS CLI.
  • caso não saiba como realizar essa configuração,clique aqui.

Na conta a qual o Bucket está (Conta de Origem)

  • Inserir a policy abaixo no bucket que será copiado:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<ID-DA-CONTA-DESTINO>:user/<NOME-DO-USUARIO-IAM-CRIADO-NA-CONTA-DESTINO>""
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<NOME-DO-BUCKET-QUE-ESTÁ-INSERINDO-ESSA-POLICY>/*",
                "arn:aws:s3:::<NOME-DO-BUCKET-QUE-ESTÁ-INSERINDO-ESSA-POLICY>"
            ]
        }
    ]
}

Enter fullscreen mode Exit fullscreen mode

Acesse a maquina a qual foi configurada as credenciais

-Execute o comando para que a copia seja realizada.

aws s3 sync s3://<NOME-DO-BUCKET-DE-ORIGEM> s3://<NOME-DO-BUCKET-DE-DESTINO>

Pode utilizar o comando aws cp, porem o sync é mais eficiente caso queria rodar a copiar mais de uma vez sincronizando os arquivos

EXTRA
Se o bucket for muito grande, vale a pena executar a cópia utilizando o comando 'screen' (em ambientes Linux). Esse comando fará com que a cópia seja executada em segundo plano. Dessa forma, em situações em que as credenciais estejam configuradas em uma instância EC2 e a conexão com a mesma seja perdida, a cópia não será interrompida.

  • Criar uma sessao nomeada

screen -S nome_da_sessao

  • Minimizar sessão

Ctrl+A+D

  • Lista sessões ativar

screen -ls

  • Ir para a sessao

screen -r id_da_sessao

  • Encerrar sessão

screen -r id_da_sessao
Ctrl+C
exit

Top comments (0)