Wie behebe ich Probleme mit asynchronen Lambda-Aufrufen?

Lesedauer: 3 Minute
0

Ich habe eine AWS-Lambda-Funktion eingerichtet, die asynchron aufgerufen wird, aber das Ziel wird nicht initiiert. Wie kann ich dieses Problem beheben? Wenn ich eine Lambda-Funktion über die Lambda-Konsole aufrufe, wird sie synchron oder asynchron aufgerufen? -oder- Wie repariere ich doppelte Lambda-Funktionsaufrufe?

Auflösung

Wenn Sie eine Lambda-Funktion asynchron aufrufen und diese fehlschlägt, gibt es folgende mögliche Ursachen:

  • Lambda hat keine Berechtigung, die im Code enthaltenen Aktionen auszuführen.
  • Der AWS-Service, der die Lambda-Funktion aufruft, verfügt nicht über ausreichende Berechtigungen.
  • Die Lambda-Funktion wurde synchron aufgerufen.
  • Wiederholungsversuche wurden in der asynchronen Aufrufkonfiguration für eine Lambda-Funktion auf 0 gesetzt.

Führen Sie die folgenden Schritte aus, um Probleme mit asynchronen Aufrufen zu beheben:

1.    Ermitteln Sie, wie die Lambda-Funktion aufgerufen wird. Wird die Funktion mit AWS CLI aufgerufen? Wird die Funktion über einen AWS-Service aufgerufen?

2.    Überprüfen Sie, ob der AWS-Service die Lambda-Funktion synchron oder asynchron aufruft.

3.    Rufen Sie die Lambda-Funktion asynchron mit dem folgenden Befehl auf:

aws lambda invoke
  --function-name my-function 
      --invocation-type Event
          --cli-binary-format raw-in-base64-out
              --payload '{ "key": "value" }' response.json

Prüfen Sie, ob ein 202-Statuscode gemeldet wird oder ob der Befehl einen Fehler zurückgibt.

4.    Überprüfen Sie die Amazon-CloudWatch-Protokolle der Lambda-Funktion, um festzustellen, ob die doppelten Aufrufe:

  • Dieselbe Anforderungs-ID haben oder nicht.
  • Fehler oder Zeitüberschreitung zurückgegeben werden.

Weitere Informationen finden Sie unter Wie verhindere ich doppelte Lambda-Funktionsaufrufe?

5.    Wenn die doppelten Aufrufe dieselbe Anforderungs-ID haben und Fehler oder Zeitüberschreitungen zurückgegeben wurden, konfigurieren Sie die Fehlerbehandlung für asynchrone Aufrufe. Mit dieser Konfiguration können Sie die Anzahl der Wiederholungen steuern, die der Lambda-Service im Falle eines Fehlers durchführen kann.

Weitere Informationen finden Sie unter Fehlerbehandlung und automatische Wiederholungsversuche in AWS Lambda.

Hinweis: Doppelte Aufrufe mit derselben Anforderungs-ID, die Fehler oder Zeitüberschreitungen zurückgeben, weisen darauf hin, dass Lambda die Funktion erneut versucht hat.

6.    Wenn die doppelten Aufrufe keine Fehler zurückgegeben haben und keine Zeitüberschreitung aufgetreten ist, gehen Sie wie folgt vor:

  • Stellen Sie sicher, dass der Code der Lambda-Funktion idempotent ist und dieselben Nachrichten mehrfach verarbeiten kann.
  • Stellen Sie sicher, dass das Gleichzeitigkeitslimit Ihrer Lambda-Funktion hoch genug eingestellt ist, um die Anzahl der empfangenen Aufrufsanforderungen zu verarbeiten.
  • Identifizieren und beheben Sie alle Fehler, die Ihre Lambda-Funktion zurückgibt.

Weitere Informationen finden Sie unter Wie behebe ich Lambda-Funktionsfehler?

Hinweis: Wenn doppelte Aufrufe von der Clientseite stammen, unterscheiden sich die Anforderungs-IDs.

7.    Wenn Sie das Problem immer noch nicht lösen können, öffnen Sie einen Fall beim AWS Support. Geben Sie in dem Fall die folgenden Informationen an:

  • Der Amazon-Ressourcenname (ARN) der Lambda-Funktion.
  • Den Workflow zur Einrichtung der Lambda-Funktion mit allen enthaltenen Leistungen.
  • Einzelheiten darüber, ob das Problem zeitweise oder kontinuierlich auftritt.
  • Vollständige CloudWatch-Protokolle im .txt-Format vom Zeitpunkt des Auftretens des Problems. Diese CloudWatch-Protokolle werden verwendet, um Lambda-Funktionsfehler zu identifizieren, zu denen Zeitüberschreitungsprobleme, Init-Dauer und Berechtigungsprobleme gehören.
  • Den genauen Zeitstempel des Problems mit der Zeitzone oder dem Zeitstempel in UTC.

Hinweis: AWS-Supportmitarbeiter haben aus Sicherheits- und Datenschutzgründen keinen Zugriff auf die CloudWatch-Protokolle der Kunden.


Relevante Informationen

Vergleich von Lambda-Aufrufmodi

Aufruf von Lambda-Funktionen

Einführung in AWS-Lambda-Ziele

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr