Wie konfiguriere ich eine Lambda-Funktion, um eine Verbindung zu einer RDS-Instance herzustellen?

Lesedauer: 7 Minute
0

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, legen Sie 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, Ihre RDS-Instance in einer VPC zu belassen. Verwenden Sie 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 finden Sie 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, verwenden Sie die Daten-API für Aurora Serverless.

Lösung

Wichtig: Stellen Sie sicher, dass Sie alle Einstellungen für Anschlussbereich, Quelle und Ziel, die in den folgenden Beispielen enthalten sind, an Ihre eigenen Netzwerkkonfigurationen anpassen. 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

Verwenden Sie die folgenden Netzwerkkonfigurationen, wenn Sie eine Lambda-Funktion mit einer RDS-Instance in derselben VPC verbinden.

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 finden Sie unter Routing-Tabellen Konzepte.

1.Verwenden Sie für Sicherheitsgruppen eine der folgenden Netzwerkeinstellungen:

Für Instancen, die derselben Sicherheitsgruppe zugeordnet sind, machen Sie die Sicherheitsgruppe zur Quelle für die Regel für eingehenden Datenverkehr. Machen Sie 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

TypProtokollAnschlussbereichQuelle
Benutzerdefiniertes TCPTCP3306sg-abcd1234

Beispiel-Ausgangsregel für Instancen, die derselben Sicherheitsgruppe zugeordnet sind

TypProtokollAnschlussbereichZielort
Benutzerdefiniertes TCPTCP3306sg-abcd1234

-oder-

Stellen Sie 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 Sie sie verbinden möchten

TypProtokollAnschlussbereichZielort
Benutzerdefiniertes TCPTCP3306sg-abcd

Beispiel-Eingangsregel für eine RDS-Instance in einer anderen Sicherheitsgruppe als der Lambda-Funktion, mit der Sie sie verbinden möchten

TypProtokollAnschlussbereichQuelle
Benutzerdefiniertes TCPTCP3306sg-1234

Wichtig: Stellen Sie sicher, dass die Regeln eine TCP-Verbindung über den Anschluss der Datenbank zulassen.

2.Stellen Sie 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. Sie können diese Standardeinstellungen jedoch ändern.

Konfigurieren Sie 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

TypProtokollAnschlussbereichZielortErlauben/Verweigern
Benutzerdefiniertes TCPTCP3306172.31.10.0/24Zulassen
Benutzerdefiniertes TCPTCP3306172.31.64.0/20Zulassen

Wichtig: Wenden Sie 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.

Stellen Sie 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

TypProtokollAnschlussbereichQuelleErlauben/Verweigern
Benutzerdefiniertes TCPTCP1024-65535172.31.10.0/24Zulassen
Benutzerdefiniertes TCPTCP1024-65535172.31.64.0/20Zulassen

Wichtig: Wenden Sie 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

Verwenden Sie zunächst VPC-Peering, um die beiden VPCs zu verbinden. Verwenden Sie dann die folgenden Netzwerkkonfigurationen, um die Lambda-Funktion in einer VPC mit der RDS-Instance in der anderen zu verbinden:

Wichtig: Stellen Sie sicher, dass Sie das Domain Name System (DNS) für die VPC-Peering-Verbindung aktivieren.

1.Bestätigen Sie für die Routing-Tabelle, dass die VPC-Peering-Verbindung erfolgreich ist:
Suchen Sie für den Zielort nach dem CIDR der gepeerten VPC.
Suchen Sie 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

ZielortZiel
172.31.0.0/16pcx-01234abcd
10.0.0.0/16lokal

Beispiel-Routing-Tabelle für eine gepeerte VPC mit einer RDS-Instance

ZielortZiel
10.0.0.0/16pcx-01234abcd
172.31.0.0/16lokal

Weitere Informationen finden Sie unter Aktualisieren Sie Ihre Routing-Tabellen für eine VPC-Peering-Verbindung.

2.Verwenden Sie für Sicherheitsgruppen die folgenden Netzwerkeinstellungen:

Stellen Sie 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

TypProtokollAnschlussbereichZielort
Benutzerdefiniertes TCPTCP3306172.31.0.0/16

Erlauben Sie 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

TypProtokollAnschlussbereichQuelle
Benutzerdefiniertes TCPTCP330610.0.0.0/16

3.Folgen Sie 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 können Sie 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.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr