Wie behebe ich Verbindungs-Timeout-Fehler von Lambda, wenn ich versuche, auf eine Amazon-RDS-DB-Instance zuzugreifen?
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:
- 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
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren