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
- Criar um bucket na conta de destino, na mesma região.
- Habilitar o versionamento no bucket de origem.
- Habilitar o versionamento no bucket de destino.
- 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!