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.
Planen Sie Jobs für Amazon RDS for Postgre SQL und Aurora Postgre mithilfe SQL von Lambda und Secrets Manager
Erstellt von Yaser Raja () AWS
Umgebung: PoC oder Pilotprojekt | Quelle: Datenbanken: Relational | Ziel: SQL Postgre auf AWS |
R-Typ: N/A | Arbeitsaufwand: Open Source | Technologien: Datenbanken |
AWSDienste: AWS Lambda; AmazonRDS; AWS Secrets Manager; Amazon Aurora |
Übersicht
Für lokale Datenbanken und Datenbanken, die auf Amazon Elastic Compute Cloud (AmazonEC2) -Instances gehostet werden, verwenden Datenbankadministratoren häufig das Cron-Hilfsprogramm, um Jobs zu planen.
Beispielsweise kann ein Job für die Datenextraktion oder ein Job für das Löschen von Daten einfach mit Cron geplant werden. Für diese Jobs sind die Datenbankanmeldedaten in der Regel entweder fest codiert oder in einer Eigenschaftendatei gespeichert. Wenn Sie jedoch zu Amazon Relational Database Service (AmazonRDS) oder Amazon Aurora SQL Postgre-Compatible Edition migrieren, verlieren Sie die Möglichkeit, sich bei der Host-Instance anzumelden, um Cron-Jobs zu planen.
Dieses Muster beschreibt, wie AWS Lambda und AWS Secrets Manager verwendet werden, um Jobs für Amazon RDS for Postgre SQL - und Aurora SQL Postgre-Compatible Datenbanken nach der Migration zu planen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives Konto AWS
Eine Amazon RDS for Postgre SQL - oder Aurora Postgre-kompatible Datenbank SQL
Einschränkungen
Ein Job muss innerhalb von 15 Minuten abgeschlossen sein. Dies ist das Timeout-Limit für Lambda-Funktionen. Weitere Grenzwerte finden Sie in der AWSLambda-Dokumentation.
Der Jobcode muss in einer von Lambda unterstützten Sprache geschrieben sein.
Architektur
Quelltechnologie-Stack
Dieser Stack enthält Jobs, die in Sprachen wie Bash, Python und Java geschrieben wurden. Datenbankanmeldedaten werden in der Eigenschaftendatei gespeichert, und der Job wird mithilfe von Linux-Cron geplant.
Zieltechnologie-Stack
Dieser Stack hat eine Lambda-Funktion, die die in Secrets Manager gespeicherten Anmeldeinformationen verwendet, um eine Verbindung zur Datenbank herzustellen und die Aktivität auszuführen. Die Lambda-Funktion wird im geplanten Intervall mithilfe von Amazon CloudWatch Events initiiert.
Zielarchitektur
Tools
AWSLambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitzustellen oder zu verwalten. AWSLambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch, von wenigen Anfragen pro Tag bis hin zu Tausenden pro Sekunde. Sie zahlen nur für die Rechenzeit, die Sie verbrauchen. Es fallen keine Gebühren an, wenn Ihr Code nicht ausgeführt wird. Mit AWS Lambda können Sie Code für praktisch jede Art von Anwendung oder Backend-Service ohne Verwaltungsaufwand ausführen. AWSLambda führt Ihren Code auf einer hochverfügbaren Recheninfrastruktur aus und verwaltet alle Rechenressourcen, einschließlich Server- und Betriebssystemwartung, Kapazitätsbereitstellung und automatische Skalierung, Codeüberwachung und Protokollierung. Sie müssen lediglich Ihren Code in einer der Sprachen bereitstellen, die AWS Lambda unterstützt.
Amazon CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS Ressourcen beschreiben, nahezu in Echtzeit. Mithilfe einfacher Regeln, die Sie schnell einrichten können, können Sie Ereignisse zuordnen und sie an eine oder mehrere Zielfunktionen oder Streams weiterleiten. CloudWatch Events erkennt betriebliche Änderungen, sobald sie eintreten. Es reagiert auf diese betrieblichen Änderungen und ergreift bei Bedarf Korrekturmaßnahmen, indem es Nachrichten sendet, um auf die Umgebung zu reagieren, Funktionen aktiviert, Änderungen vornimmt und Statusinformationen erfasst. Sie können CloudWatch Ereignisse auch verwenden, um mithilfe von Cron - oder Rate-Ausdrücken automatisierte Aktionen zu planen, die zu bestimmten Zeiten von selbst ausgelöst werden.
AWSSecrets Manager hilft Ihnen dabei, Geheimnisse für den Zugriff auf Ihre Anwendungen, Dienste und IT-Ressourcen zu schützen. Sie können Datenbankanmeldedaten, API Schlüssel und andere Geheimnisse während ihres gesamten Lebenszyklus problemlos rotieren, verwalten und abrufen. Benutzer und Anwendungen rufen Geheimnisse ab, indem sie Secrets Manager aufrufen. Dadurch entfällt die NotwendigkeitAPIs, vertrauliche Informationen im Klartext fest zu codieren. Secrets Manager bietet geheime Rotation mit integrierter Integration für AmazonRDS, Amazon Redshift und Amazon DocumentDB. Der Service ist auf andere Arten von Geheimnissen, einschließlich API Schlüssel und Token, erweiterbar. OAuth Secrets Manager ermöglicht es Ihnen, den Zugriff auf geheime Daten mithilfe detaillierter Berechtigungen zu kontrollieren und die geheime Rotation für Ressourcen in der AWS Cloud, in Diensten von Drittanbietern und vor Ort zentral zu überwachen.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Datenbankbenutzer für die Lambda-Funktion. | Es empfiehlt sich, separate Datenbankbenutzer für verschiedene Teile Ihrer Anwendung zu verwenden. Wenn für Ihre Cron-Jobs bereits ein separater Datenbankbenutzer existiert, verwenden Sie diesen. Andernfalls erstellen Sie einen neuen Datenbankbenutzer. Weitere Informationen finden Sie unter SQLPostgre-Benutzer und -Rollen verwalten | DBA |
Speichern Sie Datenbankanmeldedaten als geheim in Secrets Manager. | Folgen Sie den Anweisungen unter Create a database secret (Secrets Manager-Dokumentation). | DBA, DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Wählen Sie eine von AWS Lambda unterstützte Programmiersprache. | Eine Liste der unterstützten Sprachen finden Sie unter Lambda-Laufzeiten (Lambda-Dokumentation). | Developer |
Schreiben Sie die Logik zum Abrufen der Datenbankanmeldedaten von Secrets Manager. | Beispielcode finden Sie unter So stellen Sie mithilfe von AWS Secrets Manager Datenbankanmeldedaten sicher für Lambda-Funktionen | Developer |
Schreiben Sie die Logik zur Ausführung der geplanten Datenbankaktivität. | Migrieren Sie Ihren vorhandenen Code für den Scheduling-Job, den Sie vor Ort verwenden, auf die AWS Lambda-Funktion. Weitere Informationen finden Sie unter Deployment von Lambda-Funktionen (Lambda-Dokumentation). | Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie das Lambda-Funktionsbereitstellungspaket. | Dieses Paket enthält den Code und seine Abhängigkeiten. Weitere Informationen finden Sie unter Bereitstellungspakete (Lambda-Dokumentation). | Developer |
So erstellen Sie die Lambda-Funktion: | Wählen Sie in der AWS Lambda-Konsole Create function aus, geben Sie einen Funktionsnamen ein, wählen Sie die Laufzeitumgebung aus und wählen Sie dann Create function aus. | DevOps |
Laden Sie das Bereitstellungspaket hoch. | Wählen Sie die Lambda-Funktion aus, die Sie erstellt haben, um ihre Konfiguration zu öffnen. Sie können Ihren Code direkt in den Codebereich schreiben oder Ihr Bereitstellungspaket hochladen. Um Ihr Paket hochzuladen, gehen Sie zum Abschnitt Funktionscode, wählen Sie den Eintragstyp Code aus, um eine ZIP-Datei hochzuladen, und wählen Sie dann das Paket aus. | DevOps |
Konfigurieren Sie die Lambda-Funktion gemäß Ihren Anforderungen. | Sie können beispielsweise den Timeout-Parameter auf die Dauer festlegen, die Ihre Lambda-Funktion voraussichtlich dauern wird. Weitere Informationen finden Sie unter Konfiguration von Funktionsoptionen (Lambda-Dokumentation). | DevOps |
Legen Sie die Berechtigungen für die Lambda-Funktionsrolle für den Zugriff auf Secrets Manager fest. | Anweisungen finden Sie unter Verwenden von Geheimnissen in AWS Lambda-Funktionen (Secrets Manager Manager-Dokumentation). | DevOps |
Testen Sie die Lambda-Funktion. | Initiieren Sie die Funktion manuell, um sicherzustellen, dass sie wie erwartet funktioniert. | DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Regel, damit die Lambda-Funktion nach einem Zeitplan ausgeführt wird. | Planen Sie die Lambda-Funktion mithilfe von CloudWatch Events. Anweisungen finden Sie unter Lambda-Funktionen mithilfe von CloudWatch Ereignissen planen (CloudWatch Events-Tutorial). | DevOps |