

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Automatizza la replica delle istanze Amazon RDS su Account AWS
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts"></a>

*Parag Nagwekar e Arun Chandapillai, Amazon Web Services*

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

Questo modello mostra come automatizzare il processo di replica, tracciamento e ripristino delle istanze DB di Amazon Relational Database Service (Amazon RDS) tra diverse istanze database utilizzando e. Account AWS AWS Step Functions AWS Lambda Puoi utilizzare questa automazione per eseguire repliche su larga scala di istanze DB RDS senza alcun impatto sulle prestazioni o sovraccarico operativo, indipendentemente dalle dimensioni dell'organizzazione. È inoltre possibile utilizzare questo modello per aiutare l'organizzazione a rispettare le strategie obbligatorie di governance dei dati o i requisiti di conformità che richiedono la replica e la ridondanza dei dati su aree diverse. Account AWS Regioni AWS La replica su più account dei dati di Amazon RDS su larga scala è un processo manuale inefficiente e soggetto a errori che può essere costoso e dispendioso in termini di tempo, ma l'automazione in questo modello può aiutarti a ottenere la replica tra account in modo sicuro, efficace ed efficiente.

## Prerequisiti e limitazioni
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-prereqs"></a>

**Prerequisiti**
+ Due Account AWS
+ Un'istanza DB RDS, attiva e funzionante nell'origine Account AWS
+ Un gruppo di sottoreti per l'istanza DB RDS nella destinazione Account AWS
+ Una chiave AWS Key Management Service (AWS KMS) creata nell'origine Account AWS e condivisa con l'account di destinazione (per ulteriori informazioni sui dettagli delle politiche, consulta la sezione [Informazioni aggiuntive](#automate-the-replication-of-amazon-rds-instances-across-aws-accounts-additional) di questo modello).
+ Un AWS KMS key nella destinazione Account AWS per crittografare il database nell'account di destinazione

**Limitazioni**
+ Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta la pagina [Endpoint e quote del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

**Versioni del prodotto**
+ Python 3.9 (utilizzo) AWS Lambda
+ PostgreSQL 11.3, 13.x e 14.x

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

**Stack tecnologico**
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Simple Notification Service (Amazon SNS)
+ AWS Key Management Service (AWS KMS)
+ AWS Lambda
+ Gestione dei segreti AWS
+ AWS Step Functions

**Architettura Target**

Il diagramma seguente mostra un'architettura per l'utilizzo di Step Functions per orchestrare la replica pianificata e su richiesta delle istanze DB RDS da un account di origine (account A) a un account di destinazione (account B).

![\[Replica delle istanze DB di Amazon RDS tra account di origine e destinazione utilizzando Step Functions.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/6310ad9b-1b1a-4a67-b684-ef605fef3e87/images/001550bb-cf6b-493d-9de9-0229a43753a1.png)


Nell'account di origine (account A nel diagramma), la macchina a stati Step Functions esegue le seguenti operazioni:

1. Crea un'istantanea dall'istanza DB RDS nell'account A.

1. Copia e crittografa lo snapshot con un account di origine A. Per garantire la crittografia in transito, lo snapshot viene crittografato indipendentemente AWS KMS key dal fatto che l'istanza DB sia crittografata o meno.

1. Condivide lo snapshot DB con l'account B dando all'account B l'accesso allo snapshot.

1. Invia una notifica all'argomento SNS, quindi l'argomento SNS richiama la funzione Lambda nell'account B.

Nell'account di destinazione (account B nel diagramma), la funzione Lambda esegue la macchina a stati Step Functions per orchestrare quanto segue:

1. Copia l'istantanea condivisa dall'account A all'account B, mentre utilizza prima l'account AWS KMS key dall'account A per decrittografare i dati e poi crittografa i dati utilizzando l'account B. AWS KMS key 

1. Legge il segreto da Secrets Manager per acquisire il nome dell'istanza DB corrente.

1. Ripristina l'istanza DB dallo snapshot con un nuovo nome e un valore predefinito per AWS KMS key Amazon RDS.

1. Legge l'endpoint del nuovo database e aggiorna il segreto in Secrets Manager con il nuovo endpoint del database, quindi etichetta l'istanza DB precedente in modo che possa essere eliminata in un secondo momento.

1. Mantiene le ultime N istanze dei database ed elimina tutte le altre istanze.

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

**Servizi AWS**
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) ti aiuta a configurare, gestire e scalare un database relazionale in. Cloud AWS
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su e. Account AWS Regioni AWS
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) consente di creare e controllare chiavi crittografiche per proteggere i dati.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [AWS SDK per Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)è un kit di sviluppo software che ti aiuta a integrare la tua applicazione, libreria o script Python con. Servizi AWS
+ Con [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) puoi sostituire le credenziali nel codice,incluse le password, con una chiamata API a Secrets Manager in modo da recuperare il segreto a livello di codice.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)è un servizio di orchestrazione serverless che consente di combinare funzioni Lambda e altro Servizi AWS per creare applicazioni aziendali critiche.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [Crossaccount RDS Replication.](https://github.com/aws-samples/aws-rds-crossaccount-replication)

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

### Automatizza la replica delle istanze DB RDS con un solo clic Account AWS
<a name="automate-the-replication-of-rds-db-instances-across-aws-accounts-with-a-single-click"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Implementa lo CloudFormation stack nell'account di origine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Amministratore del cloud, architetto del cloud | 
| Implementa lo CloudFormation stack nell'account di destinazione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Architetto cloud, DevOps ingegnere, amministratore del cloud | 
| Verifica la creazione dell'istanza DB RDS nell'account di destinazione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Amministratore cloud, architetto cloud, DevOps ingegnere | 
| Sottoscrivi la funzione Lambda all'argomento SNS. | È necessario eseguire i seguenti comandi AWS Command Line Interface (AWS CLI) per sottoscrivere la funzione Lambda nell'account di destinazione (account B) all'argomento SNS nell'account di origine (account A).Nell'account A, esegui il seguente comando:<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>Nell'account B, esegui il seguente comando:<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>Nell'account B, esegui il seguente comando:<pre>aws sns subscribe \<br />--protocol "lambda" \<br />--topic-arn <Arn of SNSTopic> \<br />--notification-endpoint <Arn of InvokeStepFunction></pre> | Amministratore cloud, architetto cloud, DBA | 
| Sincronizza l'istanza DB RDS dall'account di origine con l'account di destinazione. | Avvia la replica del database su richiesta avviando la macchina a stati Step Functions nell'account di origine.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html)È disponibile uno scheduler che consente di eseguire la replica automaticamente nei tempi previsti, ma per impostazione predefinita è disattivato. Puoi trovare il nome della CloudWatch regola Amazon per lo scheduler nella scheda **Risorse** dello CloudFormation stack nell'account di destinazione. Per istruzioni su come modificare la regola degli CloudWatch eventi, consulta [Eliminazione o disabilitazione di una regola relativa CloudWatch agli eventi](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Delete-or-Disable-Rule.html) nella documentazione. CloudWatch  | Architetto cloud, DevOps ingegnere, amministratore del cloud | 
| Ripristina il database su una delle copie precedenti quando necessario. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-replication-of-amazon-rds-instances-across-aws-accounts.html) | Amministratore cloud, DBA, ingegnere DevOps  | 

## Risorse correlate
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-resources"></a>
+ [Repliche di lettura tra regioni](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.CrossRegionReadReplicas.html) (documentazione Amazon RDS)
+ [Implementazioni blu/verdi (documentazione](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.BlueGreenDeployments.html) Amazon RDS)

## Informazioni aggiuntive
<a name="automate-the-replication-of-amazon-rds-instances-across-aws-accounts-additional"></a>

Puoi utilizzare la seguente policy di esempio per condividere le tue informazioni. AWS KMS key Account 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": "*"
        }
    ]
}
```