Wie kann ich 5xx-Fehler für API Gateway beheben?

Lesedauer: 5 Minute
0

Wenn ich meine Amazon API Gateway-API aufrufe, erhalte ich einen 5xx-Fehler.

Kurze Beschreibung

HTTP 5xx-Antwortcodes weisen auf Serverfehler hin. Zu den API Gateway 5xx-Fehlern gehören die folgenden Fälle:

  • 500 interner Server
  • 502 schlechtes Gateway
  • 503 Dienst nicht verfügbar
  • 504 Timeout der Endpunktanfrage

Lösung

Bevor Sie beginnen, folgen Sie den Schritten, um Amazon CloudWatch Logs zur Behebung von API-Gateway-Fehlern zu aktivieren.

Verwenden Sie die CloudWatch Logs, um 5xx-Fehler vom API Gateway zu finden. Die API-Gateway-Metrik 5xxError zählt die Anzahl der serverseitigen Fehler, die in einem bestimmten Zeitraum erfasst wurden.

**Hinweis:**Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

500-Fehler: interner Serverfehler

Dieser Fehler kann aufgrund eines der folgenden Szenarien auftreten:

  • Fehler im AWS Lambda-Funktionscode
  • Fehlende Berechtigungen für die Verwendung einer Stufenvariablen
  • Falsche oder fehlende HTTP-Statuscode-Zuordnung
  • Probleme mit der Drosselung
  • Undefinierte HTTP-Methode von POST
  • Lambda-Berechtigungen
  • JSON-Formatproblem der Lambda-Funktion
  • Backend-Payload-Größe von mehr als 10 MB
  • Integration privater Endpunkte
  • Interne Dienstausfälle

Fehler im Lambda-Funktionscode

API-Endpunkt 500-Fehler, die in Lambda integriert sind, können darauf hindeuten, dass der Code der Lambda-Funktion einen Fehler enthält. Weitere Informationen und Problemlösungen finden Sie unter Muster zur Fehlerbehandlung in Amazon API Gateway und AWS Lambda.

Fehlende Berechtigungen für die Verwendung einer Stufenvariablen

Wenn Sie eine Stufenvariable verwenden, um ein API-Gateway zum Aufrufen einer Lambda-Funktion einzurichten, wird möglicherweise ein interner Serverfehler angezeigt. Informationen zur Behebung dieses Fehlers finden Sie unter Ich habe meine Lambda-Integration in API Gateway mithilfe einer Stufenvariablen definiert. Warum erhalte ich einen „Internen Serverfehler“ und einen 500-Statuscode, wenn ich die API-Methode aufrufe?

Falsche oder fehlende HTTP-Statuscode-Zuordnung

Eine falsche oder fehlende HTTP-Statuscode-Zuordnung kann ebenfalls zu 500-Fehlern führen. Um dieses Problem zu lösen, richten Sie Scheinintegrationen im API Gateway ein.

Probleme mit der Drosselung

Wenn eine hohe Anzahl von Anfragen den Back-End-Dienst drosselt, gibt die API Gateway-API möglicherweise einen internen Serverfehler zurück. Um dieses Problem zu beheben, aktivieren Sie einen Mechanismus für exponentielle Backoff- und Wiederholungsversuche und versuchen Sie es dann erneut mit der Anfrage. Wenn das Problem weiterhin besteht, überprüfen Sie Ihr API Gateway-Kontingentlimit. Wenn Sie das Limit für das Servicekontingent überschreiten, können Sie eine Erhöhung des Kontingents beantragen.

Undefinierte HTTP-Methode von POST

Für die Lambda-Integration müssen Sie die HTTP-Methode von POST für die Integrationsanfrage verwenden.

Führen Sie den AWS-CLI-Befehl put-integration aus, um die Methodenintegrationsanfrage zu aktualisieren:

aws apigateway put-integration \
    --rest-api-id id \
    --resource-id id \
    --http-method ANY \
    --type AWS_PROXY \
    --integration-http-method POST \
    --uri arn:aws:apigateway:us-east-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-east-2:account_id:function:helloworld/invocations

Verwenden Sie dann den AWS-CLI-Befehl create-deployment, um die REST-API bereitzustellen:

aws apigateway create-deployment \
    --rest-api-id id \
    --stage-name <value>

Lambda-Berechtigungen

Stellen Sie sicher, dass die ressourcenbasierte Richtlinie der integrierten Lambda-Funktion oder des Lambda-Genehmigers Berechtigungen für Ihre API zum Aufrufen der Funktion enthält. Folgen Sie den Anweisungen, um die ressourcenbasierte Richtlinie Ihrer Lambda-Funktion zu aktualisieren.

JSON-Formatproblem mit der Lambda-Funktion

Die integrierte Lambda-Funktion gibt keine Ausgabe gemäß dem vordefinierten JSON-Format für REST-APIs und HTTP-APIs zurück. Aktualisieren Sie Ihre Lambda-Funktion oder Ihren Lambda-Genehmiger im JSON-Format:

REST-API:

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
    "body": "..."
}

HTTP-API:

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headername": "headervalue", ... },
    "multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
    "body": "..."
}

Backend-Payload-Größe von mehr als 10 MB

Die maximale Backend-Payload-Größe beträgt 10 MB. Sie können die Größe nicht erhöhen. Stellen Sie sicher, dass die Backend-Payload-Größe das Standardkontingent von 10 MB nicht überschreitet.

Integration privater Endpunkte

Wenn Sie einen privaten API-Endpunkt verwenden, müssen Sie auch die private API Gateway-Integration konfigurieren. Folgen Sie den Anweisungen, um private API Gateway-Integrationen einzurichten.

Interne Dienstausfälle

Wenn bei AWS interne Dienstprobleme auftreten, erhalten Sie möglicherweise einen 500-Fehler. Warten Sie, bis das Problem innerhalb von AWS oder dem API Gateway-Dienst behoben ist, und wiederholen Sie dann die Anfrage mit exponentiellem Backoff.

502-Fehler: falsches Gateway

Ein 502-Fehlercode bezieht sich auf den AWS-Service, in den Ihr API-Gateway integriert ist, z. B. eine AWS Lambda-Funktion. API Gateway kann die Antwort nicht als Gateway oder Proxy verarbeiten.

Informationen zur Behebung dieses Problems finden Sie unter Wie behebe ich HTTP 502-Fehler von API-Gateway-REST-APIs mit Lambda-Proxyintegration?

**Hinweis:**Wenn API Gateway die Antwort des Back-End-Dienstes interpretiert, verwendet es Zuordnungsvorlagen, um das Format im Abschnitt mit den Integrationsantworten abzubilden. Weitere Informationen finden Sie unter Eine Integrationsantwort in API Gateway einrichten.

503-Fehler: Dienst nicht verfügbar

Ein 503-Fehlercode bezieht sich auf die Backend-Integration und darauf, ob die API Gateway-API keine Antwort empfangen kann.

Dieser Fehler kann in den folgenden Szenarien auftreten:

  • Der Backend-Server ist überlastet und kann keine neuen Client-Anfragen verarbeiten.
  • Der Backend-Server wird vorübergehend gewartet.

Um diesen Fehler zu beheben, sollten Sie erwägen, dem Backend-Server mehr Ressourcen zur Verfügung zu stellen und einen exponentiellen Backoff- und Wiederholungsmechanismus auf dem Client zu aktivieren. Versuchen Sie es dann erneut mit der Anfrage.

504-Fehler: Das Zeitlimit für die Endpunktanfrage ist abgelaufen

Wenn eine Integrationsanfrage länger dauert als der maximale Integrations-Timeout-Parameter Ihrer API Gateway REST-API, gibt API Gateway einen HTTP 504-Statuscode zurück.

Informationen zur Behebung dieses Fehlers finden Sie unter Wie kann ich API HTTP 504-Timeout-Fehler mit API Gateway beheben?

Ähnliche Informationen

Bewährte Sicherheitsmethoden in Amazon API Gateway

Überwachung der REST-API-Ausführung mit Amazon CloudWatch-Metriken

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr