Wie behebe ich Verbindungs-Timeout-Fehler von Lambda, wenn ich versuche, auf eine Amazon-RDS-DB-Instance zuzugreifen?

Lesedauer: 4 Minute
0

Meine AWS Lambda-Funktion erhält Verbindungs-Timeout-Fehler, wenn sie versucht, auf eine Amazon Relational Database Service (Amazon RDS)-DB-Instance zuzugreifen. Wie behebe ich diese Fehler?

Lösung

Beheben zeitweiliger und vorübergehender Verbindungs-Timeout-Fehler

Erfassen der Ereignisse der Lambda-Funktion und erneuter Versuch im Rahmen der Fehlerbehandlung Ihrer Funktion

Weitere Informationen finden Sie unterFehlerbehandlung und automatische Wiederholungen in AWS Lambda.

Suchen nach DNS-Fehlern

Überprüfen Sie, ob Fehler im Zusammenhang mit dem Domain Name System (DNS) vorliegen. Wenn es DNS-Fehler gibt, fangen Sie sie ab. Starten Sie dann die DNS-Anfrage erneut, indem Sie ein exponentielles Backoff verwenden. Weitere Informationen finden Sie unter Error retries and exponential backoff in AWS.

Hinweis: Stellen Sie sicher, dass Sie die eingehenden und ausgehenden Endpunkte auflösen können, bevor Sie die DNS-Anfrage erneut starten.

Beheben konsistenter Verbindungs-Timeout-Fehler

Überprüfen der Amazon CloudWatch Logs der Lambda-Funktion

Falls dies noch nicht geschehen ist, gewähren Sie Ihrer Lambda-Funktion CloudWatch-Protokollierungsberechtigungen. Überprüfen Sie dann die Protokolle Ihrer Funktion, um bestimmte Verbindungs-Timeout-Fehler zu identifizieren.

Weitere Informationen finden Sie unter Monitoring and troubleshooting Lambda applications.

Überprüfen der VPC-Konfiguration

Gehen Sie für private Datenbanken je nach Anwendungsfall wie folgt vor:

Siedeln Sie Ihre Lambda-Funktion in derselben Amazon Virtual Private Cloud (Amazon VPC) an wie die Datenbank.

  • oder -

Erstellen Sie eine VPC-Peering-Verbindung zwischen der Amazon VPC, die Ihre Funktion enthält, und der Amazon VPC, die Ihre Datenbank enthält.

Gehen Sie im Fall einer öffentlichen Datenbank wie folgt vor:

(Für Funktionen in einer Amazon VPC) Leiten Sie öffentlichen Datenverkehr durch ein Network Address Translation (NAT)-Gateway oder eine NAT-Instance. Weitere Informationen finden Sie unter Wie gewähre ich einer Lambda-Funktion, die mit einer Amazon VPC verbunden ist, Internetzugriff?

Hinweis: Wenn die Datenbank öffentlich zugänglich ist und es keine Einschränkungen auf Basis von IP-Adressen für die Datenbank gibt, folgen Sie den Anweisungen im Tutorial: Verwenden einer Lambda-Funktion für den Zugriff auf Amazon RDS in einer Amazon VPC.

Überprüfen der Sicherheitsgruppenregeln

Gehen Sie im Fall einer privaten Datenbank wie folgt vor:

Fügen Sie Ihrer DB-Sicherheitsgruppe eine Regel für eingehenden Datenverkehr hinzu, die Datenverkehr aus dem CIDR-Bereich der Subnetze oder Sicherheitsgruppe der VPC zulässt.

Gehen Sie im Fall einer öffentlichen Datenbank wie folgt vor:

Fügen Sie Ihrer DB-Sicherheitsgruppe eine Regel für eingehenden Datenverkehr hinzu, die Datenverkehr vom NAT-Gateway oder der NAT-Instance der VPC zulässt.

Aktualisieren des Lambda-Funktions-Handlers

Aktualisieren Sie Ihren Lambda-Funktionscode, sodass die Funktion die Datenbankverbindung außerhalb des Funktions-Handlers öffnet und die Verbindung nicht schließt.

Hinweis: Aufgrund der Art und Weise, wie Lambda Container wiederverwendet, initialisiert Lambda den Code außerhalb eines Funktions-Handlers nicht erneut, wenn der Container wiederverwendet wird. Es hat sich bewährt, die Verbindung, die Sie wiederverwenden möchten, außerhalb des Handlers herzustellen, sodass sie bei jedem folgenden Aufruf weiterhin vorhanden ist. Vergewissern Sie sich, dass eine gültige Verbindung besteht, bevor Sie versuchen, die Verbindung zu verwenden. Wenn keine gültige Verbindung bestehe, erstellen Sie eine neue Verbindung, bevor Sie fortfahren.

Herstellen einer Verbindung mithilfe einer EC2-Instance

Starten Sie testweise eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance mit derselben Amazon-VPC-Konfiguration wie sie Ihre Lambda-Funktion aufweist. Versuchen Sie dann, von der EC2-Instance aus eine Verbindung zur Amazon-RDS-DB-Instance herzustellen.

Wenn Sie eine Verbindung zur Datenbank herstellen können, folgen Sie den Anweisungen unter Troubleshoot networking issues in Lambda.

  • oder -

Wenn Sie keine Verbindung zur Datenbank herstellen können, folgen Sie den Anweisungen unter Wie behebe ich Probleme beim Herstellen einer Verbindung zu meiner Amazon-RDS-DB-Instance?

Verwenden von Amazon-RDS-Proxy

Erstellen Sie einen Amazon Relational Database Service (Amazon RDS)-Proxy-Endpunkt für Ihre RDS-Datenbank, um den Datenbank-Datenverkehr Ihrer Lambda-Funktion abzuwickeln. Weitere Informationen finden Sie unter Using Amazon RDS Proxy with AWS Lambda.

Hinweis: Die Amazon-RDS-Proxy-Unterstützung für MySQL und PostgreSQL ist jetzt allgemein verfügbar.


Ähnliche Informationen

Konfigurieren des Datenbankzugriffs für eine Lambda-Funktion

Verwenden von AWS Lambda mit Amazon RDS

Wie kann ich Verbindungsprobleme mit einer Amazon-RDS-Instance beheben, die ein öffentliches oder privates Subnetz einer VPC verwendet?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren