Wie behebe ich HTTP 504-Fehler von einer API-Gateway-REST-API mit einem Lambda-Backend?

Lesedauer: 3 Minute
0

Ich erhalte einen HTTP 504-Fehlerstatuscode, wenn ich eine REST-API mithilfe von Amazon API Gateway mit einem AWS-Lambda-Backend aufrufe. Wie kann ich diesen Fehler beheben?

Lösung

Wenn Ihre REST-API-Anforderungen einen HTTP 504-Fehlerstatuscode zurückgeben, müssen Sie verschiedene Prüfungen durchführen.

Nach sprunghaften Anstiegen bei der Integration/Latenz suchen

Überprüfen Sie, ob es im API Gateway zu einem Anstieg der Integrationslatenz kommt, indem Sie die Dauer der Integrationslatenz überprüfen. Um die Dauer der Integrationslatenz zu sehen, konfigurieren Sie die Zugriffsprotokollierungsvariable $context.integration.latency für die HTTP-API-Protokollierung.

Weitere Informationen finden Sie unter Einrichten der Amazon-CloudWatch-API-Protokollierung mithilfe der API-Gateway-Konsole.

Ein sprunghafter Anstieg der Integrationslatenz im API Gateway weist darauf hin, dass die Anforderung die meiste Zeit in Lambda verbracht hat. Überprüfen Sie die Leistungsmetrik Dauer der Lambda-Funktion, um dies zu bestätigen.

Weitere Informationen finden Sie unter Arbeiten mit Lambda-Funktionsmetriken.

Anforderungen mit CloudWatch Logs Insights überprüfen

Verwenden Sie Amazon CloudWatch Logs Insights, um Anforderungen zu überprüfen, die zu 504-Fehlern geführt haben. Um die Anfragen zu überprüfen, wählen Sie in der CloudWatch-Konsole im Navigationsbereich Protokolle die Option Log Insights aus. Wählen Sie Ihre API-Gateway-Protokollgruppe aus. Stellen Sie dann die relative Zeit mit einer der folgenden Abfragen ein:

parse @message '(*) *' as reqId, message
| filter message like /Method completed with status: \d\d\d/
| parse message 'Method completed with status: *' as status
| filter status = 504
| sort @timestamp desc
| limit 20

-oder-

fields @timestamp, @message
| filter message like /Method completed with status: 504/
| sort @timestamp desc
| limit 20

X-Ray-Traces instrumentieren

Wenn kontinuierlich 504-Fehler auftreten, stellen Sie fest, wo die Lambda-Funktion ihre Zeit verbringt. Instrument-AWS-X-Ray instrumentiert Traces von Lambda-Funktionen auf der Grundlage der Lambda-Funktionslaufzeit.

Für Python:

from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()

Für Node.js:

const AWSXRay = require('aws-xray-sdk-core')
const AWS = AWSXRay.captureAWS(require('aws-sdk'))

Hinweis: Sie müssen ein neues Bereitstellungspaket erstellen, nachdem Sie X-Ray-Traces für eine Lambda-Funktion instrumentiert haben.

API-Wiederholungsversuche implementieren

Wenn ein 504-Fehler auftritt und die Anforderung in Lambda nicht gefunden wird, implementieren Sie API-Wiederholungsversuche auf dem Client. Der Fehler könnte auf einen temporären Netzwerkfehler im API Gateway zurückzuführen sein.

Lambda-Funktionskonfiguration prüfen

Stellen Sie sicher, dass Ihre Lambda-Funktion nur über eine ereignisspezifische API-Gateway-Verarbeitungslogik verfügt. Auf diese Weise benötigt die Lambda-Funktion weniger Zeit für die Ausführung und kann mit eingehenden Ereignissen Schritt halten.

REST-APIs haben standardmäßig ein maximales Integrations-Timeout von 29 Sekunden. Stellen Sie daher sicher, dass die Laufzeit der Lambda-Funktion unter 29 Sekunden liegt.

Wenn Sie einen Anwendungsfall haben, in dem die Anwendung zeitkritisch ist, finden Sie weitere Informationen unter Einrichten des asynchronen Aufrufs der Backend-Lambda-Funktion.


Ähnliche Informationen

Dimensionen und Metriken des API-Gateways

Einrichten der CloudWatch-Protokollierung für eine REST-API in API Gateway

API-Gateway-Protokollereignisse in der CloudWatch-Konsole anzeigen

Rückverfolgen von Benutzeranforderungen an REST-APIs mithilfe von X-Ray

Verwenden von Lambda mit X-Ray

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren