Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Automatisieren Sie die Replikation von RDS Amazon-Instances auf AWS-Konten
Erstellt von Parag Nagwekar () und Arun Chandapillai () AWS AWS
Übersicht
Dieses Muster zeigt Ihnen, wie Sie den Prozess der Replikation, der Nachverfolgung und des Rollbacks Ihrer Amazon Relational Database Service (AmazonRDS) -DB-Instances auf verschiedenen Ebenen mithilfe AWS-Konten AWS Step Functions von und automatisieren können. AWS Lambda Sie können diese Automatisierung verwenden, um eine groß angelegte Replikation von RDS DB-Instances ohne Leistungseinbußen oder betrieblichen Mehraufwand durchzuführen — unabhängig von der Größe Ihres Unternehmens. Sie können dieses Muster auch verwenden, um Ihr Unternehmen bei der Einhaltung verbindlicher Datenverwaltungsstrategien oder Compliance-Anforderungen zu unterstützen, die eine Replikation und Redundanz Ihrer Daten über verschiedene Länder hinweg erfordern. AWS-Konten AWS-Regionen Die kontenübergreifende Replikation von RDS Amazon-Daten in großem Umfang ist ein ineffizienter und fehleranfälliger manueller Prozess, der kostspielig und zeitaufwändig sein kann. Die Automatisierung in diesem Muster kann Ihnen jedoch dabei helfen, die kontenübergreifende Replikation sicher, effektiv und effizient durchzuführen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Zwei AWS-Konten
Eine RDS DB-Instance, die in der Quelle läuft AWS-Konto
Eine Subnetzgruppe für die RDS DB-Instance im Ziel AWS-Konto
Ein AWS Key Management Service (AWS KMS) -Schlüssel, der in der Quelle erstellt AWS-Konto und für das Zielkonto freigegeben wurde (Weitere Informationen zu Richtliniendetails finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.)
Ein AWS KMS key im Ziel AWS-Konto , um die Datenbank im Zielkonto zu verschlüsseln
Einschränkungen
Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie AWS-Services unter Nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Produktversionen
Python 3.9 (verwenden AWS Lambda)
Postgre SQL 11.3, 13.x und 14.x
Architektur
Technologie-Stack
Amazon Relational Database Service (AmazonRDS)
Amazon Simple Notification Service (AmazonSNS)
AWS Key Management Service (AWS KMS)
AWS Lambda
AWS Secrets Manager
AWS Step Functions
Zielarchitektur
Das folgende Diagramm zeigt eine Architektur für die Verwendung von Step Functions zur Orchestrierung der geplanten On-Demand-Replikation von RDS DB-Instances von einem Quellkonto (Konto A) zu einem Zielkonto (Konto B).

Im Quellkonto (Konto A im Diagramm) führt die Step Functions-Zustandsmaschine Folgendes aus:
Erstellt einen Snapshot von der RDS DB-Instance in Konto A.
Kopiert und verschlüsselt den Snapshot mit einem AWS KMS key Absenderkonto A. Um die Verschlüsselung während der Übertragung sicherzustellen, wird der Snapshot verschlüsselt, unabhängig davon, ob die DB-Instance verschlüsselt ist oder nicht.
Teilt den DB-Snapshot mit Konto B, indem Konto B Zugriff auf den Snapshot gewährt wird.
Sendet eine Benachrichtigung an das SNS Thema, und dann ruft das SNS Thema die Lambda-Funktion in Konto B auf.
Im Zielkonto (Konto B im Diagramm) führt die Lambda-Funktion die Step Functions Functions-Zustandsmaschine aus, um Folgendes zu orchestrieren:
Kopiert den gemeinsam genutzten Snapshot von Konto A auf Konto B, wobei zuerst das AWS KMS key Absenderkonto A verwendet wird, um die Daten zu entschlüsseln und dann die Daten mit dem Konto B zu verschlüsseln. AWS KMS key
Liest das Geheimnis aus Secrets Manager, um den Namen der aktuellen DB-Instance zu erfassen.
Stellt die DB-Instance aus dem Snapshot mit einem neuen Namen und Standard AWS KMS key für Amazon wieder herRDS.
Liest den Endpunkt der neuen Datenbank und aktualisiert das Geheimnis in Secrets Manager mit dem neuen Datenbank-Endpunkt und kennzeichnet dann die vorherige DB-Instance, sodass sie später gelöscht werden kann.
Behält die letzten N Instanzen der Datenbanken bei und löscht alle anderen Instanzen.
Tools
AWS-Services
Amazon Relational Database Service (AmazonRDS) unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Datenbank in der. AWS Cloud
Amazon Simple Notification Service (AmazonSNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und zu verwalten AWS-Regionen.
AWS Key Management Service (AWS KMS) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.
AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
AWS SDK for Python (Boto3)
ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services. AWS Secrets Managerhilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Kennwörtern, durch einen API Aufruf von Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.
AWS Step Functionsist ein serverloser Orchestrierungsservice, mit dem Sie Lambda-Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.
Code-Repository
Der Code für dieses Muster ist im GitHub Crossaccount RDS Replication
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Stellen Sie den CloudFormation Stack im Quellkonto bereit. |
| Cloud-Administrator, Cloud-Architekt |
Stellen Sie den CloudFormation Stack im Zielkonto bereit. |
| Cloud-Architekt, DevOps Ingenieur, Cloud-Administrator |
Überprüfen Sie die Erstellung der RDS DB-Instance im Zielkonto. |
| Cloud-Administrator, Cloud-Architekt, DevOps Ingenieur |
Abonnieren Sie die Lambda-Funktion für das SNS Thema. | Sie müssen die folgenden Befehle AWS Command Line Interface (AWS CLI) ausführen, um die Lambda-Funktion im Zielkonto (Konto B) für das SNS Thema im Quellkonto (Konto A) zu abonnieren. Führen Sie in Konto A den folgenden Befehl aus:
Führen Sie in Konto B den folgenden Befehl aus:
Führen Sie in Konto B den folgenden Befehl aus:
| Cloud-Administrator, Cloud-Architekt, DBA |
Synchronisieren Sie die RDS DB-Instance aus dem Quellkonto mit dem Zielkonto. | Initiieren Sie die On-Demand-Datenbankreplikation, indem Sie die Step Functions-Zustandsmaschine im Quellkonto starten.
AnmerkungEs gibt einen Scheduler, mit dem Sie die Replikation automatisch und planmäßig ausführen können. Der Scheduler ist jedoch standardmäßig ausgeschaltet. Den Namen der CloudWatch Amazon-Regel für den Scheduler finden Sie auf der Registerkarte Ressourcen des CloudFormation Stacks im Zielkonto. Anweisungen zum Ändern der CloudWatch Ereignisregel finden Sie in der Dokumentation unter Löschen oder Deaktivieren einer CloudWatch Ereignisregel. CloudWatch | Cloud-Architekt, DevOps Ingenieur, Cloud-Administrator |
Führen Sie bei Bedarf ein Rollback Ihrer Datenbank auf eine der vorherigen Kopien durch. |
| Cloud-AdministratorDBA, DevOps Ingenieur |
Zugehörige Ressourcen
Regionsübergreifende Read Replicas (RDSAmazon-Dokumentation)
Blaue/grüne Bereitstellungen (RDSAmazon-Dokumentation)
Zusätzliche Informationen
Sie können die folgende Beispielrichtlinie verwenden, um Ihre AWS KMS key Across gemeinsam zu nutzen. AWS-Konten
{
"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": "*"
}
]
}