Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Wie behebe ich API-Gateway-HTTP-504-Statuscode-Timeout-Fehler?
Ich habe einen HTTP-504-Fehlerstatuscode erhalten, als ich Amazon API Gateway verwendet habe, um meine REST-API, HTTP-API oder WebSocket-API aufzurufen.
Kurzbeschreibung
Wenn eine Integrationsanfrage länger dauert als der konfigurierte Parameter für das maximale Integrations-Timeout der API-Gateway-API, gibt API Gateway einen HTTP-504-Statuscode zurück.
Um 504-Timeout-Fehler von API Gateway zu beheben, musst du zunächst die Fehlerquelle in deinen Amazon-CloudWatch-Ereignisprotokollen identifizieren und überprüfen. Verwende anschließend eine der folgenden Methoden, um die Laufzeit der Integrationsanfragen zu reduzieren, bis keine Zeitüberschreitung mehr auftritt.
Du kannst auch das Integrations-Timeout-Limit für regionale und private REST-APIs über das Standardlimit von 29 Sekunden hinaus erhöhen.
Lösung
Identifizierung und Überprüfung der Ursache des 504-Fehlers in CloudWatch-Protokollen
Führe die folgenden Schritte aus:
-
Richte für die REST-API und die WebSocket-API die API Gateway-Protokollierung für 504-Fehler ein. Aktiviere für die HTTP-API die Protokollierung, um die Protokolle in die CloudWatch-Protokolle zu schreiben.
-
Versuche, den 504-Fehler in der API manuell zu reproduzieren.
-
Aktiviere die Zugriffsprotokollierung für die API. Verwende dann die folgenden Parameter-Platzhalter, um die Fehlerquelle zu diagnostizieren:
$context.integration.status: The status code returned from an integration. For AWS Lambda proxy integrations, this is the status code that your Lambda function code returns.$context.integrationStatus: For Lambda proxy integration, this parameter represents the status code returned from Lambda, not from the backend Lambda function. $context.integrationLatency: The integration latency in ms.Weitere Informationen findest du unter Kontextvariablen für Datentransformationen.
-
Verwende die folgende CloudWatch-Log-Insights-Abfrage, um den Statuscode „5##“ aus den Zugriffsprotokollen zu filtern:
fields @timestamp, @message, @logStream| filter status like '5' | sort @timestamp desc | display @timestamp,httpMethod,resourcePath,status,extendedRequestId,requestId -
Zeige in der CloudWatch-Konsole die API Gateway-Protokollereignisse für die Integration an, bei welcher der Fehler aufgetreten ist.
-
Verfolge die Anfragen-ID in den CloudWatch-Protokollen. Wenn bei der Integration Zeitüberschreitungen auftreten, wird nach der Zeile Endpunktanfragetext nach Transformationen der Fehler „Execution failed due to a timeout“ angezeigt. Weitere Informationen findest du unter Wie finde ich API-Gateway-REST-API-Fehler in meinen CloudWatch-Protokollen?
-
Verwende die folgende-CloudWatch-Log-Insights-Abfrage, um den Fehler zu filtern und deine API-Gateway-Ausführungsprotokollgruppe auszuwählen:
fields @timestamp, @message|filter @message like "Execution failed due to a timeout error" |sort @timestamp desc -
Um die Fehlerquelle zu ermitteln, überprüfe die Backend-Protokolle und stelle sicher, dass der zugehörige Integrationsendpunkt aufgerufen wurde.
-
Überprüfe, wie lange die Integration gedauert hat, um den Anfrageprozess abzuschließen und an API Gateway zu antworten.
-
Wenn die Integration nicht aufgerufen wurde, implementiere API-Wiederholungen auf dem Client. Der Fehler kann auf einen temporären Netzwerkfehler im API-Gateway-Service zurückzuführen sein.
Hinweis: Stelle sicher, dass die Anwendung idempotent ist, damit du Datenkonflikte vermeidest, wenn du die API-Anfrage erneut versuchst.
Wenn die Integration aufgerufen wurde, aber immer noch eine 504-Fehlermeldung zurückgegeben wird, reduziere die Laufzeit der Integration.
Die Laufzeit der Integration reduzieren
Ergreife die folgenden Maßnahmen:
- Stelle sicher, dass die Backend-Integration nur die Logik enthält, die für API Gateway erforderlich ist, um eine HTTP-Antwort an den Client zu senden.
- Verschiebe jede unabhängige Logik oder Nachbearbeitungslogik in einen anderen Service, wie z. B. AWS Lambda.
- Wenn Netzwerklatenzen den 504-Fehler verursachen, implementiere die Wiederholungslogik in der clientseitigen Anwendung.
- Befolge bewährte Methoden für die AWS-Produkte und -Services, um die Leistung der Backend-Integration zu verbessern.
- Richte den asynchronen Aufruf der Backend-Lambda-Funktion ein.
Das Integrations-Timeout-Limit für regionale und private APIs erhöhen
Du kannst eine Kontingentanforderung stellen, um das standardmäßige Integrations-Timeout-Limitkontingent für regionale APIs und private APIs auf mehr als 29 Sekunden zu erhöhen. Eine Erhöhung des Integrations-Timeouts kann jedoch eine Reduzierung des Drosselkontingents auf Regionsebene für das AWS-Konto erforderlich machen.
Hinweis: Wenn du das Integrations-Timeout-Limit erhöhst, stelle sicher, dass du den Standard-Timeout-Wert von 29 Sekunden auf den neuen Wert änderst. Ändere beispielsweise den Standard-Timeout-Wert von 29 Sekunden in den Integrationen, auf die du die Erhöhung anwenden möchtest. Stelle dann die API erneut bereit, damit das neue Timeout-Limit für die Integration wirksam wird.
Ähnliche Informationen
Integrationen für REST-APIs im API Gateway
Eine WebSocket-API-Integrationsanfrage im API Gateway einrichten
Integrationen für HTTP-APIs im API Gateway erstellen
Wie behebe ich HTTP-504-Fehler von einer API-Gateway-REST-API mit einem Lambda-Backend?
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Jahren
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 2 Jahren