Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Automatisez la réplication des RDS instances Amazon sur Comptes AWS
Créé par Parag Nagwekar (AWS) et Arun Chanapillai () AWS
Environnement : Production | Technologies : bases de données DevOps ; infrastructure ; sans serveur | Charge de travail : toutes les autres charges de travail |
AWSservices : AWS Lambda RDS ; Amazon ; pour AWS SDK Python (Boto3) ; Amazon ; Step Functions SNS AWS |
Récapitulatif
Ce modèle vous montre comment automatiser le processus de réplication, de suivi et de restauration de vos instances de base de données Amazon Relational Database Service (RDSAmazon) sur Comptes AWS différentes instances en AWS Step Functions utilisant et. AWS Lambda Vous pouvez utiliser cette automatisation pour effectuer une réplication à grande échelle d'RDSinstances de base de données sans impact sur les performances ni surcharge opérationnelle, quelle que soit la taille de votre organisation. Vous pouvez également utiliser ce modèle pour aider votre entreprise à se conformer aux stratégies obligatoires de gouvernance des données ou aux exigences de conformité qui exigent que vos données soient répliquées et redondantes entre différents Comptes AWS et. Régions AWS La réplication multicompte des RDS données Amazon à grande échelle est un processus manuel inefficace et sujet aux erreurs, qui peut être coûteux et chronophage, mais l'automatisation selon ce modèle peut vous aider à réaliser une réplication entre comptes de manière sûre, efficace et efficiente.
Conditions préalables et limitations
Prérequis
Deux Comptes AWS
Une RDS instance de base de données, opérationnelle dans la source Compte AWS
Un groupe de sous-réseaux pour l'RDSinstance de base de données dans la destination Compte AWS
Une clé AWS Key Management Service (AWS KMS) créée dans la source Compte AWS et partagée avec le compte de destination (pour plus d'informations sur les détails de la politique, consultez la section Informations supplémentaires de ce modèle.)
Un AWS KMS key dans la destination Compte AWS pour chiffrer la base de données dans le compte de destination
Limites
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir Services AWS par région
. Pour des points de terminaison spécifiques, consultez la page Points de terminaison et quotas du service, puis choisissez le lien vers le service.
Versions du produit
Python 3.9 (en utilisant AWS Lambda)
SQLPostgre11.3, 13.x et 14.x
Architecture
Pile technologique
Amazon Relational Database Service (AmazonRDS)
Service de notification simple d'Amazon (AmazonSNS)
AWS Key Management Service (AWS KMS)
AWS Lambda
AWS Secrets Manager
AWS Step Functions
Architecture cible
Le schéma suivant montre une architecture permettant d'utiliser Step Functions pour orchestrer la réplication planifiée et à la demande d'RDSinstances de base de données d'un compte source (compte A) vers un compte de destination (compte B).
Dans le compte source (compte A dans le schéma), la machine d'état Step Functions effectue les opérations suivantes :
Crée un instantané à partir de l'RDSinstance de base de données du compte A.
Copie et chiffre le cliché avec un compte AWS KMS key de provenance A. Pour garantir le chiffrement pendant le transfert, le cliché est chiffré, que l'instance de base de données soit chiffrée ou non.
Partage l'instantané de base de données avec le compte B en donnant au compte B l'accès à l'instantané.
Envoie une notification au SNS sujet, puis le SNS sujet invoque la fonction Lambda dans le compte B.
Dans le compte de destination (compte B dans le schéma), la fonction Lambda exécute la machine d'état Step Functions pour orchestrer les opérations suivantes :
Copie l'instantané partagé du compte A vers le compte B, tout en utilisant le AWS KMS key compte A pour déchiffrer les données, puis les chiffrer AWS KMS key à l'aide du compte B intégré.
Lit le secret depuis Secrets Manager pour capturer le nom de l'instance de base de données actuelle.
Restaure l'instance de base de données à partir du snapshot avec un nouveau nom et un nouveau nom par défaut AWS KMS key pour AmazonRDS.
Lit le point de terminaison de la nouvelle base de données et met à jour le secret dans Secrets Manager avec le nouveau point de terminaison de base de données, puis étiquette l'instance de base de données précédente afin qu'elle puisse être supprimée ultérieurement.
Conserve les N dernières instances des bases de données et supprime toutes les autres instances.
Outils
Services AWS
Amazon Relational Database Service (RDSAmazon) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans le. AWS Cloud
Amazon Simple Notification Service (AmazonSNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.
AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques pour protéger vos données.
AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
AWS SDK for Python (Boto3)
est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS. AWS Secrets Managervous permet de remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, en API appelant Secrets Manager pour récupérer le secret par programmation.
AWS Step Functionsest un service d'orchestration sans serveur qui vous aide à combiner des fonctions Lambda et d'autres fonctions pour créer des applications critiques Services AWS pour l'entreprise.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub Crossaccount RDS Replication
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Déployez la CloudFormation pile dans le compte source. |
| Administrateur cloud, architecte cloud |
Déployez la CloudFormation pile dans le compte de destination. |
| Architecte cloud, DevOps ingénieur, administrateur cloud |
Vérifiez la création de l'RDSinstance de base de données dans le compte de destination. |
| Administrateur cloud, architecte cloud, DevOps ingénieur |
Abonnez la fonction Lambda à la SNS rubrique. | Vous devez exécuter les commandes suivantes AWS Command Line Interface (AWS CLI) pour abonner la fonction Lambda du compte de destination (compte B) à la SNS rubrique du compte source (compte A). Dans le compte A, exécutez la commande suivante :
Dans le compte B, exécutez la commande suivante :
Dans le compte B, exécutez la commande suivante :
| Administrateur cloud, architecte cloud, DBA |
Synchronisez l'RDSinstance de base de données du compte source avec le compte de destination. | Lancez la réplication de base de données à la demande en démarrant la machine d'état Step Functions dans le compte source.
Remarque : un planificateur est en place pour vous aider à exécuter la réplication automatiquement comme prévu, mais il est désactivé par défaut. Vous trouverez le nom de la CloudWatch règle Amazon pour le planificateur dans l'onglet Ressources de la CloudFormation pile du compte de destination. Pour savoir comment modifier la règle CloudWatch des événements, consultez la section Supprimer ou désactiver une règle d' CloudWatch événements dans la CloudWatch documentation. | Architecte cloud, DevOps ingénieur, administrateur cloud |
Restaurez votre base de données à l'une des copies précédentes si nécessaire. |
| Administrateur cloudDBA, DevOps ingénieur |
Ressources connexes
Répliques de lecture entre régions (documentation AmazonRDS)
Informations supplémentaires
Vous pouvez utiliser l'exemple de politique suivant pour partager AWS KMS key le vôtre Comptes 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": "*" } ] }