Direkt zum Inhalt

Wie behebe ich Probleme mit API Gateway-Endpunkten, die in Lambda integriert sind?

Lesedauer: 3 Minute
0

Ich möchte einen Amazon API Gateway-Endpunkt in AWS Lambda integrieren, habe aber eine Fehlermeldung erhalten.

Lösung

Befolge diese Schritte zur Fehlerbehebung für die Fehlermeldung, die du erhalten hast.

Bevor du beginnst, aktiviere Amazon CloudWatch Logs, um API Gateway-Fehler zu beheben. Wähle unter Protokollstufe die Option INFO aus, um Ausführungsprotokolle für alle Anforderungen zu generieren.

API Gateway hat keine Lambda-Funktionsberechtigungen

Der Fehler Invalid permissions on Lambda function tritt auf, wenn API Gateway keine Berechtigungen zum Aufrufen der Lambda-Funktion hat. Informationen zur Behebung dieses Problems findest du unter Wie behebe ich die Fehler „Invalid permissions on Lambda function“ von API Gateway-REST-APIs?

Hinweis: Wenn du einen anderen Service verwendest, um API Gateway-Ressourcen bereitzustellen, z. B. AWS CloudFormation, gewähre der Ressource AWS::Lambda::Permission Berechtigungen.

Es kommt zu einer Drosselung

Wenn der Backend-Service aufgrund einer hohen Anzahl von Anforderungen gedrosselt wird, gibt die API Gateway-API möglicherweise einen internen Serverfehler zurück. Aktiviere einen exponentiellen Backoff- und Wiederholungs-Mechanismus und sende die Anforderung dann erneut. Wenn das Problem weiterhin besteht, überprüfe dein API Gateway-Kontingent. Wenn du das Servicekontingent überschreitest, fordere eine Kontingenterhöhung für die Parallelität der Lambda-Funktion an, damit die Funktion nicht gedrosselt wird.

Möglicherweise erhältst du aufgrund von Problemen mit der Drosselung der Lambda-Funktion auch die Fehler Rate exceeded und 429 TooManyRequestsException. Weitere Informationen findest du unter Wie behebe ich die Drosselungsfehler „Rate exceeded“ und „TooManyRequestsException“ der Lambda-Funktion?

Die Statuscode-Zuordnung ist falsch oder fehlt

Wenn die HTTP-Statuscode-Zuordnung falsch ist oder fehlt, erhältst du möglicherweise eine 500-Fehlermeldung, die der folgenden ähnelt:

„Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx“.

Um diesen Fehler zu beheben, konfiguriere die Integrationsanforderung und -antwort der API-Operation so, dass der richtige Statuscode zurückgegeben wird.

Lambda-Serviceausnahmen werden nicht verwaltet

Wenn du keine Lambda-Serviceausnahmen verwaltest, z. B. ein Timeout der Lambda-Funktion, erhältst du den Fehler Lambda.Unknown. Um ein Timeout der Lambda-Funktion zu verhindern, mache den Lambda-Funktionscode idempotent.

Weitere Informationen findest du unter Problembehandlungsmuster in API Gateway und Lambda.

Timeout-Probleme mit dem Endpunkt der Lambda-Integration

Das Standardkontingent für das Timeout der API Gateway-Integration beträgt 29 Sekunden für alle Integrationstypen. Wenn die Lambda-Funktion länger als 29 Sekunden benötigt, um die Antwort zurückzugeben, schlägt die Anforderung fehl und es wird ein 504-Fehler des Endpunkt-Anforderungs-Timeouts angezeigt.

Stelle sicher, dass die Lambda-Funktion die Antwort innerhalb von 29 Sekunden zurückgibt. Wenn die Lambda-Funktion die Antwort nicht innerhalb von 29 Sekunden zurückgeben kann, reiche eine Kontingenterhöhung für die Begrenzung des Integrations-Timeouts ein.

Hinweis: Du kannst das Integrations-Timeout für regionale APIs und private APIs auf mehr als 29 Sekunden erhöhen. Eine Erhöhung des Integrations-Timeouts kann jedoch eine Reduzierung des Drosselkontingents auf Regionsebene für das AWS-Konto erforderlich machen.

Das JSON-Format der Lambda-Funktion ist falsch

Wenn die Ausgabe der integrierten Lambda-Funktion nicht dem angegebenen JSON-Format für REST-APIs entspricht, erhältst du den Fehler malformed proxy. Stelle sicher, dass du das richtige JSON-Format für die Ausgabe von Lambda-Funktionen für Proxy-Integrationen und von Lambda-Genehmigern verwendest.

Beispiel für eine Lambda-Funktion für die Proxy-Integration:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

Ähnliche Informationen

Wie behebe ich API-Gateway-HTTP-Aufruffehler?