Amazon AWSCloud

Replicação de objetos do S3 entre diferentes contas AWS

Como realizar a replicação dos objetos do S3 para outra conta AWS

Este artigo detalha o processo de replicação de objetos do Amazon S3 entre contas AWS. Seguindo as etapas descritas, você configurará buckets, permissões IAM e regras de replicação para garantir a cópia automática dos arquivos entre diferentes ambientes.

Implementação dos recursos

Esta sessão visa demonstrar a implementação de alguns recursos do serviço Amazon Simple Storage Service (Amazon S3), para atingir o objetivo de replicar objetos para outra conta AWS, na mesma região.

Pre-requisitos
  1. Criar um bucket na conta de destino, na mesma região.
  2. Habilitar o versionamento no bucket de origem.
  3. Habilitar o versionamento no bucket de destino.
  4. Acesso às contas AWS por console e CLI da AWS

Procedimento Técnico

Esta sessão será dividida em algumas sessões.

  • Etapa 01 – Criação dos novos buckets

Na conta de origem, procure pelo serviço AWS S3, na barra de pesquisa da AWS

Clique no botão Create Bucket

Defina um nome para o seu bucket. Aqui vou determinar como ar7-s3-demo-replicacao-origem

Procure a opção Bucket Versioning, clique na opção Enable e clique no botão Create bucket no final da tela. As demais configurações, podem deixar padrão (será o suficiente para esta demonstração)

Será exibido uma mensagem informando que o bucket foi criado com sucesso.

Observação 01: Repita esta etapa na conta AWS de destino, alterando o nome do bucket.

Ao término desta etapa, você terá os seguintes ARNs:

– arn:aws:s3:::ar7-s3-demo-replicacao-origem

– arn:aws:s3:::ar7-s3-demo-replicacao-destino

  • Etapa 02 – Criação das roles de IAM

2.1 Na conta de Origem, procure pelo serviço IAM na barra de pesquisa da AWS

Expanda a sessão Access management, selecione a opção Policies e clique no botão Create policy

Na tela a seguir, altere para opção JSON

Insira o código JSON, abaixo, para conceder permissões nos objetos e pastas dentro do seu bucket de origem, e clique no botão Next

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1740672781977",
            "Action": [
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionForReplication"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::seu-bucket-01/*",
                "arn:aws:s3:::seu-bucket-02/*",
                "arn:aws:s3:::seu-bucket-03/*"
            ]
        },
        {
            "Sid": "Stmt1740672808498",
            "Action": [
                "s3:GetReplicationConfiguration",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::seu-bucket-01",
                "arn:aws:s3:::seu-bucket-02",
                "arn:aws:s3:::seu-bucket-03"
            ]
        },
        {
            "Sid": "Stmt1740672832594",
            "Action": [
                "s3:ReplicateDelete",
                "s3:ReplicateObject",
                "s3:ReplicateTags"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::seu-bucket-01/*",
                "arn:aws:s3:::seu-bucket-02/*",
                "arn:aws:s3:::seu-bucket-03/*"
            ]
        }
    ]
}

Insira um nome para sua política e clique no botão Create policy

Agora vamos criar a função (role) e vincular a política que acabamos de criar.

À sua esquerda, na sessão Access Management, clique na opção Roles e clique no botão Create role

Para relação de confiança, selecione a opção AWS service e no caso de uso, procure por S3 na lista suspensa e clique no botão Next

Procure pela política criada anteriormente, selecione ela e clique em Next

De um nome para a função (role) e clique no botão Create Role

Aparecerá uma mensagem informando que a função (role) foi criada com sucesso.

2.2 – Incluir permissões no bucket de destino

Para cada bucket do S3, no destino, adicione o código JSON na política do bucket. Para cada bucket, será necessário trocar as informações do parâmetro “Resource”. Então repita esta etapa quantas vezes for necessário no seu cenário.

Faça o login na conta AWS de Destino, procure pelo serviço AWS S3 na barra de pesquisa da console da AWS e acesse o bucket desejado.

Clique na aba Permissions

Procure a sessão Bucket Policy e clique no botão Edit

O código abaixo autoriza a Role (criada na conta AWS de Origem) as ações, explicitas nos campos “Action” no bubket e objetos.

Adicione o código JSON, a seguir e clique no botão Save Changes

{
    "Version": "2012-10-17",
    "Id": "",
    "Statement": [
        {
            "Sid": "Set permissions for objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567890:role/AWS-S3-Replica-Objetos-Role"
            },
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete"
            ],
            "Resource": "arn:aws:s3:::ar7-s3-demo-replicacao-destino/*"
        },
        {
            "Sid": "Set permissions on bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567890:role/AWS-S3-Replica-Objetos-Role"
            },
            "Action": [
                "s3:List*",
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::ar7-s3-demo-replicacao-destino"
        }
    ]
}

Aparecerá uma mensagem informando o êxito da configuração realizada.

  • Etapa 03 – Criação da regra de replicação

Retorne a conta de Origem, acesse o bucket de origem e clique na aba Management

Procure pela sessão Replication rules e clique no botão Create replication rule

Insira um nome para a regra de replicação

Na sessão Source bucket, no nosso exemplo vamos selecionar a opção que replica todos os novos objetos, escolhendo a opção Apply to all objects in the bucket

Na sessão Destination, vamos especificar o bucket de destino, informar o ID da conta de destino e marcar a opção que alterar o proprietário dos objetos (para a conta de destino).

Selecione a IAM Role, criada anteriormente e clique no botão Save.

Aparecerá duas mensagens. A primeira, informando que a configuração foi realizada com sucesso e uma pergunta para replicar os objetos existentes ou não. Neste artigo, não configuraremos a réplica dos objetos existentes. Os buckets estão vazios ainda.

Será possível ver a regra de replicação dos objetos

  • Etapa 04 – Upload dos dados, para o bucket de origem

Na aba Objetcs, clique no botão Upload

Selecione a opção pasta ou arquivos.

Será aberto uma janela do windows, para você selecionar os arquivos ou a pasta desejada e após serão listados os arquivos e pastas selecionados. No final da página clique no botão Upload

Será exibida a mensagem que os arquivos foram inseridos com sucesso no seu bucket

  • Etapa 05 – Validação do upload dos dados

Nesta etapa apenas vamos conferir se os arquivos estão dentro do bucket corretamente. Para este exemplo, optei em inserir arquivos de um site estático. Este site estático, foi baixado do site https://www.free-css.com/ onde você pode encontrar milhares de exemplos de sites gratuitos.

  • Etapa 06 – Validação da replicação dos dados

Para realizar a validação, podemos acessar qualquer objeto, dentro do bucket, nas propriedades encontre a sessão Object management overview. Como acessei esta informação minutos depois, a replicação estava com status de Pending.

Após alguns minutos, o arquivo ficará com status REPLICATED.

Considerações
  • Fique atento ao tempo máximo da sessão web do seu suários
  • Arquivos maiores que 5GB, eu tive problemas para realizar o upload através da interface web da console da AWS.

Conclusão

Seguindo as etapas descritas neste documento, você será capaz de replicar os objetos entre contas AWS.

Despedida e agradecimentos.

Espero ter ajudado. Deixe seu feedback nos comentários logo abaixo, não esqueça de se inscrever, compartilhe nas redes sociais e fique ligado nas novidades. Abraços!

Inscreva-se na lista VIP e receba todos os conteúdos

Arthur Nycael

Entusiasta por tecnologia, graduado em Redes de Computadores, Pós-Graduado em Segurança da Informação, AWS Solutions Architect, VMware vExpert ⭐⭐ e AWS Community Builder.

Deixe uma respostaCancelar resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.