Wie konfiguriere ich eine Lambda-Funktion, um eine Verbindung zu einer RDS-Instance herzustellen?
Ich möchte, dass meine AWS Lambda-Funktion eine Verbindung zu einer Amazon Relational Database Service (Amazon RDS)-Instance herstellt.
Kurzbeschreibung
Anmerkung: Die folgenden Informationen und Schritte beziehen sich auf Amazon RDS-Instancen. Die Behebung gilt jedoch auch für alle Endpunkte oder Datenbanken, die sich in einer Virtual Private Cloud (VPC) befinden.
Um eine Lambda-Funktion mit einer RDS-Instance zu verbinden, lege die Netzwerkkonfigurationen so fest, dass die Verbindung zugelassen wird.
Für jeden der folgenden Verbindungstypen gibt es unterschiedliche Konfigurationseinstellungen:
- Eine Lambda-Funktion und eine RDS-Instance in der selben VPC
- Eine Lambda-Funktion und eine RDS-Instance in verschiedenen VPCs
Aus Sicherheitsgründen empfiehlt es sich, deine RDS-Instance in einer VPC zu belassen. Verwende für öffentliche Datenbanken einen NoSQL-Datenbankdienst wie Amazon DynamoDB.
Eine Lambda-Funktion, die sich außerhalb einer VPC befindet, kann nicht auf eine RDS-Instance zugreifen, die sich innerhalb einer VPC befindet.
Informationen zur Konfiguration der Netzwerkeinstellungen einer Lambda-Funktion findest du unter Konfiguration einer Lambda-Funktion für den Zugriff auf Ressourcen in einer VPC. Wenn die Netzwerkeinstellungen falsch sind, kommt es bei der Lambda-Funktion zu einer Zeitüberschreitung und es wird eine Aufgabe ist abgelaufen Fehlermeldung angezeigt.
Um eine Lambda-Funktion mit einem Amazon Aurora-DB-Cluster zu verbinden, verwende die Daten-API für Aurora Serverless.
Lösung
Wichtig: Stelle sicher, dass du alle Einstellungen für Anschlussbereich, Quelle und Ziel, die in den folgenden Beispielen enthalten sind, an deine eigenen Netzwerkkonfigurationen anpasst. Transmission Control Protocol (TCP) ist das erforderliche Protokoll für jede Art von Netzwerkkonfiguration.
Eine Lambda-Funktion und eine RDS-Instance in der selben VPC
Verwende die folgenden Netzwerkkonfigurationen, wenn du eine Lambda-Funktion mit einer RDS-Instance in derselben VPC verbindest.
Anmerkung: Standardmäßig enthalten alle Subnetze innerhalb einer VPC eine lokale Route. Das Ziel ist das Classless Inter-Domain Routing (CIDR) der VPC, und das Ziel ist lokal. Weitere Informationen findest du unter Routing-Tabellen Konzepte.
1.Verwende für Sicherheitsgruppen eine der folgenden Netzwerkeinstellungen:
Für Instancen, die derselben Sicherheitsgruppe zugeordnet sind, mache die Sicherheitsgruppe zur Quelle für die Regel für eingehenden Datenverkehr. Mache die Sicherheitsgruppe zum Ziel für die ausgehende Regel.
Wenn sich beispielsweise die Lambda-Funktion und die RDS-Instance beide in der Sicherheitsgruppe sg-abcd1234 befinden, gelten für jede Instance die folgenden Regeln für eingehenden und ausgehenden Verkehr.
Beispiel-Eingangsregel für Instancen, die derselben Sicherheitsgruppe zugeordnet sind
Typ | Protokoll | Port-Bereich | Quelle |
Benutzerdefiniertes TCP | TCP | 3306 | sg-abcd1234 |
Beispiel-Ausgangsregel für Instancen, die derselben Sicherheitsgruppe zugeordnet sind
Typ | Protokoll | Anschlussbereich | Zielort |
Benutzerdefiniertes TCP | TCP | 3306 | sg-abcd1234 |
-oder-
Stelle bei Instancen in verschiedenen Sicherheitsgruppen sicher, dass beide Sicherheitsgruppen den Zugriff aufeinander zulassen.
Wenn sich die Lambda-Funktion beispielsweise in der Sicherheitsgruppe sg-1234 und die RDS-Instance in sg-abcd befindet, gelten für jede Gruppe die folgenden Regeln:
Beispiel-Ausgangsregel für eine Lambda-Funktion in einer anderen Sicherheitsgruppe als die RDS-Instance, mit der du sie verbinden möchtest
Typ | Protokoll | Anschlussbereich | Zielort |
Benutzerdefiniertes TCP | TCP | 3306 | sg-abcd |
Beispiel-Eingangsregel für eine RDS-Instance in einer anderen Sicherheitsgruppe als der Lambda-Funktion, mit der du sie verbinden möchtest
Typ | Protokoll | Port-Bereich | Quelle |
Benutzerdefiniertes TCP | TCP | 3306 | sg-1234 |
Wichtig: Stelle sicher, dass die Regeln eine TCP-Verbindung über den Anschluss der Datenbank zulassen.
2.Stelle für die Netzwerkzugriffskontrolllisten (NACLs) sicher, dass die Regeln für eingehenden und ausgehenden Verkehr die Kommunikation zwischen der Lambda-Funktion und der RDS-Instance ermöglichen.
Anmerkung: Standardmäßig lassen Netzwerk-ACLs sämtlichen eingehenden und ausgehenden Datenverkehr zu. Du kannst diese Standardeinstellungen jedoch ändern.
Konfiguriere die NACLs für jedes Subnetz, das mit der RDS-Instance und der Lambda-Funktion verknüpft ist, damit eine ausgehende TCP-Verbindung zu den CIDRs der anderen Instancen möglich ist.
Anmerkung: Im folgenden Beispiel werden vier Beispiel-Subnetze verwendet, die von ihren CIDRs gekennzeichnet wurden:
Für die Subnetze 172.31.1.0/24 und 172.31.0.0/28 der Lambda-Funktion.
Für die Subnetze 172.31.10.0/24 und 172.31.64.0/20 der RDS-Instance.
Beispiel-Ausgangsregeln für die NACLs der Subnetze einer Lambda-Funktion
Typ | Protokoll | Anschlussbereich | Zielort | Erlauben/Verweigern |
Benutzerdefiniertes TCP | TCP | 3306 | 172.31.10.0/24 | Zulassen |
Benutzerdefiniertes TCP | TCP | 3306 | 172.31.64.0/20 | Zulassen |
Wichtig: Wende dieselben Regeln für ausgehenden Datenverkehr auf die NACLs der Subnetze der RDS-Instance an, wobei das Ziel jedoch als CIDR der Lambda-Subnetze festgelegt ist.
Stelle sicher, dass die NACLs für jedes Subnetz eine Eingangsregel für die kurzlebigen Anschlüsse im CIDR-Bereich der Subnetze der anderen Instance haben.
Beispiel-Eingangsregeln für die NACLs der Subnetze einer Lambda-Funktion
Typ | Protokoll | Port-Bereich | Quelle | Erlauben/Verweigern |
Benutzerdefiniertes TCP | TCP | 1024-65535 | 172.31.10.0/24 | Zulassen |
Benutzerdefiniertes TCP | TCP | 1024-65535 | 172.31.64.0/20 | Zulassen |
Wichtig: Wende dieselben Regeln für eingehenden Datenverkehr auf die NACLs der Subnetze der RDS-Instance an, wobei die Quelle jedoch als CIDR der Lambda-Subnetze festgelegt ist.
Eine Lambda-Funktion und eine RDS-Instance in verschiedenen VPCs
Verwende zunächst VPC-Peering, um die beiden VPCs zu verbinden. Verwende dann die folgenden Netzwerkkonfigurationen, um die Lambda-Funktion in einer VPC mit der RDS-Instance in der anderen zu verbinden:
Wichtig: Stelle sicher, dass du das Domain Name System (DNS) für die VPC-Peering-Verbindung aktivierst.
1.Bestätige für die Routing-Tabelle, dass die VPC-Peering-Verbindung erfolgreich ist:
Suche für den Zielort nach dem CIDR der gepeerten VPC.
Suche für das Ziel nach der Peering-Verbindung.
Anmerkung: Das folgende Beispiel enthält zwei Beispiel-VPCs:
CIDR der Quell-VPC (Lambda-Funktion): 10.0.0.0/16
CIDR der gepeerten VPC (RDS-Instance): 172.31.0.0/16
Peering-Verbindung: pcx-01234abcd
Beispiel-Routing-Tabelle für eine Quell-VPC, die der Lambda-Funktion zugeordnet ist
Zielort | Ziel |
172.31.0.0/16 | pcx-01234abcd |
10.0.0.0/16 | lokal |
Beispiel-Routing-Tabelle für eine gepeerte VPC mit einer RDS-Instance
Zielort | Ziel |
10.0.0.0/16 | pcx-01234abcd |
172.31.0.0/16 | lokal |
Weitere Informationen findest du unter Aktualisieren deiner Routing-Tabellen für eine VPC-Peering-Verbindung.
2.Verwende für Sicherheitsgruppen die folgenden Netzwerkeinstellungen:
Stelle für die Sicherheitsgruppe der Lambda-Funktion sicher, dass der Datenverkehr in den CIDR der VPC der RDS-Instance ein- und ausgehen darf.
Anmerkung: Das folgende Beispiel enthält zwei Beispiel-Subnetze, die von ihren CIDRs gekennzeichnet wurden:
Für die RDS-Instance 172.31.0.0/16
Für die Lambda-Funktion 10.0.0.0/16
Beispiel-Ausgangsregel für eine Lambda-Funktion in einer anderen VPC als der RDS-Instance
Typ | Protokoll | Anschlussbereich | Zielort |
Benutzerdefiniertes TCP | TCP | 3306 | 172.31.0.0/16 |
Erlaube für die Sicherheitsgruppe der RDS-Instance, dass der Datenverkehr in den CIDR der Sicherheitsgruppe der Lambda-Funktion ein- und ausgeht.
Beispiel-Eingangsregel für eine RDS-Instance in einer anderen VPC als der Lambda-Funktion
Typ | Protokoll | Port-Bereich | Quelle |
Benutzerdefiniertes TCP | TCP | 3306 | 10.0.0.0/16 |
3.Folge für die NaCLs den vorherigen Verfahren in Schritt 3 des Abschnitts A Lambda-Funktion und RDS-Instance in der selben VPC. Der Ursprung des Subnetz-CIDR der Lambda-Funktion liegt in einer anderen VPC.
Anmerkung: Als Alternative zum VPC-Peering kannst du AWS PrivateLink verwenden, um auf Amazon RDS VPC-übergreifend zuzugreifen. Diese Lösung funktioniert für AWS-Konten und VPCs in der selben AWS-Region.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 10 Monaten