

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á.

# Automatize a replicação de instâncias do Amazon RDS em Contas da AWS
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts"></a>

*Parag Nagwekar e Arun Chandapillai, Amazon Web Services*

## Resumo
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-summary"></a>

Esse padrão mostra como automatizar o processo de replicação, rastreamento e reversão de suas instâncias de banco de dados do Amazon Relational Database Service (Amazon RDS) em diferentes instâncias usando e. Contas da AWS AWS Step Functions AWS Lambda Você pode usar essa automação para realizar a replicação em larga escala de instâncias de banco de dados do RDS sem nenhum impacto no desempenho ou sobrecarga operacional, independentemente do tamanho da sua organização. Você também pode usar esse padrão para ajudar sua organização a cumprir as estratégias obrigatórias de governança de dados ou os requisitos de conformidade que exigem que seus dados sejam replicados e redundantes em diferentes e. Contas da AWS Regiões da AWS A replicação entre contas de dados do Amazon RDS em escala é um processo manual ineficiente e propenso a erros que pode ser caro e demorado, mas a automação nesse padrão pode ajudar você a obter a replicação entre contas com segurança, eficácia e eficiência.

## Pré-requisitos e limitações
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-prereqs"></a>

**Pré-requisitos **
+ Dois Contas da AWS
+ Uma instância de banco de dados do RDS, ativa e em execução na origem Conta da AWS
+ Um grupo de sub-redes para a instância de banco de dados do RDS no destino Conta da AWS
+ Uma chave AWS Key Management Service (AWS KMS) criada na origem Conta da AWS e compartilhada com a conta de destino (para obter mais informações sobre os detalhes da política, consulte a seção [Informações adicionais](#automate-the-replication-of-amazon-rds-instances-across-aws-accounts-additional) desse padrão).
+ Um AWS KMS key no destino Conta da AWS para criptografar o banco de dados na conta de destino

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte a página [Cotas e endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ Python 3.9 (usando) AWS Lambda
+ PostgreSQL 11.3, 13.x e 14.x

## Arquitetura
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-architecture"></a>

**Pilha de tecnologia**
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ AWS Key Management Service (AWS KMS)
+ AWS Lambda
+ AWS Secrets Manager
+ AWS Step Functions

**Arquitetura de destino**

O diagrama a seguir mostra uma arquitetura para usar o Step Functions para orquestrar a replicação agendada e sob demanda de instâncias de banco de dados do RDS de uma conta de origem (conta A) para uma conta de destino (conta B).

![Replicação de instâncias de banco de dados do Amazon RDS entre contas de origem e de destino usando o Step Functions.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/6310ad9b-1b1a-4a67-b684-ef605fef3e87/images/001550bb-cf6b-493d-9de9-0229a43753a1.png)


Na conta de origem (conta A no diagrama), a máquina de estado Step Functions executa o seguinte:

1. Cria um snapshot da instância de banco de dados do RDS na conta A.

1. Copia e criptografa o snapshot com um AWS KMS key da conta A. Para garantir a criptografia em trânsito, o snapshot é criptografado, independentemente de a instância de banco de dados estar criptografada ou não.

1. Compartilha o snapshot do banco de dados com a conta B dando à conta B acesso ao snapshot.

1. Envia uma notificação para o tópico do SNS e, em seguida, o tópico do SNS invoca a função do Lambda na conta B.

Na conta de destino (conta B no diagrama), a função do Lambda executa a máquina de estado Step Functions para orquestrar o seguinte:

1. Copia o instantâneo compartilhado da conta A para a conta B, enquanto usa o AWS KMS key da conta A para descriptografar os dados primeiro e depois criptografar os dados usando a conta B. AWS KMS key 

1. Lê o segredo do Secrets Manager para capturar o nome da instância de banco de dados atual.

1. Restaura a instância de banco de dados do snapshot com um novo nome e padrão para o AWS KMS key Amazon RDS.

1. Lê o endpoint do novo banco de dados e atualiza o segredo no Secrets Manager com o novo endpoint do banco de dados e, em seguida, marca a instância de banco de dados anterior para que ela possa ser excluída posteriormente.

1. Mantém as N instâncias mais recentes dos bancos de dados e exclui todas as outras instâncias.

## Ferramentas
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-tools"></a>

**Serviços da AWS**
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS
+ O [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)é um serviço de orquestração sem servidor que ajuda você a combinar funções do Lambda e outras para criar aplicativos essenciais para os negócios. Serviços da AWS 

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [Crossaccount RDS Replication](https://github.com/aws-samples/aws-rds-crossaccount-replication).

## Épicos
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-epics"></a>

### Automatize a replicação de instâncias de banco de dados do RDS Contas da AWS com um único clique
<a name="automate-the-replication-of-rds-db-instances-across-aws-accounts-with-a-single-click"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante a CloudFormation pilha na conta de origem. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Administrador de nuvem, arquiteto de nuvem | 
| Implante a CloudFormation pilha na conta de destino. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Arquiteto de nuvem, DevOps engenheiro, administrador de nuvem | 
| Verificar a criação da instância de banco de dados do RDS na conta de destino. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Administrador de nuvem, arquiteto de nuvem, DevOps engenheiro | 
| Inscrever a função do Lambda no tópico do SNS. | Você deve executar os seguintes comandos AWS Command Line Interface (AWS CLI) para inscrever a função Lambda na conta de destino (conta B) no tópico SNS na conta de origem (conta A).<br />Na conta A, execute o comando a seguir:<pre>aws sns add-permission \<br />--label lambda-access --aws-account-id <DestinationAccount> \<br />--topic-arn <Arn of SNSTopic > \<br />--action-name Subscribe ListSubscriptionsByTopic </pre><br />Na conta B, execute o comando a seguir:<pre>aws lambda add-permission \<br />--function-name <Name of InvokeStepFunction> \<br />--source-arn <Arn of SNSTopic > \<br />--statement-id function-with-sns \<br />--action lambda:InvokeFunction \<br />--principal sns.amazonaws.com</pre><br />Na conta B, execute o comando a seguir:<pre>aws sns subscribe \<br />--protocol "lambda" \<br />--topic-arn <Arn of SNSTopic> \<br />--notification-endpoint <Arn of InvokeStepFunction></pre> | Administrador de nuvem, arquiteto de nuvem, DBA | 
| Sincronizar a instância de banco de dados do RDS da conta de origem com a conta de destino. | Iniciar a replicação do banco de dados sob demanda iniciando a máquina de estado Step Functions na conta de origem.[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html)Um agendador está disponível para ajudar você a executar a replicação automaticamente, conforme o agendamento, mas esse recurso está desativado por padrão. Você pode encontrar o nome da CloudWatch regra da Amazon para o agendador na guia **Recursos** da CloudFormation pilha na conta de destino. Para obter instruções sobre como modificar a regra de CloudWatch eventos, consulte [Excluindo ou desabilitando uma regra de CloudWatch eventos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Delete-or-Disable-Rule.html) na CloudWatch documentação. | Arquiteto de nuvem, DevOps engenheiro, administrador de nuvem | 
| Reverter seu banco de dados para qualquer uma das cópias anteriores quando necessário. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Administrador de nuvem, DBA, engenheiro DevOps  | 

## Recursos relacionados
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-resources"></a>
+ [Cross-Region read replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.CrossRegionReadReplicas.html) (documentação do Amazon RDS)
+ [Blue/Green Deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.BlueGreenDeployments.html) (documentação do Amazon RDS)

## Mais informações
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-additional"></a>

Você pode usar o exemplo de política a seguir para compartilhar suas AWS KMS key informações Contas da AWS.

```
{
    "Version": "2012-10-17",		 	 	 
    "Id": "cross-account-rds-kms-key",
    "Statement": [
        {
            "Sid": "Enable user permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<SourceAccount>:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow administration of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<DestinationAccount>:root"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::<DestinationAccount>:root",
                    "arn:aws:iam::<SourceAccount>:root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        }
    ]
}
```