Fehlerbehebung bei Problemen mit HTTP-API-Lambda-Integrationen - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung bei Problemen mit HTTP-API-Lambda-Integrationen

Im Folgenden finden Sie Hinweise zur Fehlerbehebung bei Fehlern und Problemen, die bei der Verwendung von AWS Lambda-Integrationen mit HTTP-APIs auftreten können.

Problem: Meine API mit einer Lambda-Integration gibt zurüc {"message":"Internal Server Error"}

Um den internen Serverfehler zu beheben, fügen Sie die $context.integrationErrorMessage Protokollierungsvariable zur Ihrem Protokollformat hinzu und sehen Sie sich die Protokolle Ihrer HTTP-API an. Um dies zu erreichen, gehen Sie wie folgt vor:

So erstellen Sie eine Protokollgruppe mithilfe der AWS Management Console
  1. Öffnen Sie die - CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie Protokollgruppen.

  3. Wählen Sie Protokollgruppe erstellen.

  4. Geben Sie einen Protokollgruppennamen ein und wählen Sie dann Erstellen.

  5. Notieren Sie sich den Amazon-Ressourcennamen (ARN) für Ihre Protokollgruppe. Das ARN-Format ist arn:aws:logs:region : account-id :log-group:log-group-name. Sie benötigen den ARN der Protokollgruppe, um die Zugriffsprotokollierung für Ihre HTTP-API zu aktivieren.

So fügen Sie die $context.integrationErrorMessage-Protokollierungsvariable hinzu
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre HTTP-API.

  3. Wählen Sie unter Monitor (Überwachen) die Option Logging (Protokollierung).

  4. Wählen Sie eine Stufe Ihrer API aus.

  5. Wählen Sie Bearbeiten und aktivieren Sie dann die Zugriffsprotokollierung.

  6. Geben Sie für Protokollstandortden ARN der Protokollgruppe ein, die Sie im vorherigen Schritt erstellt haben.

  7. Wählen Sie für Protokollformat die Option CLF aus. API Gateway erstellt ein Beispielprotokollformat.

  8. Fügen Sie $context.integrationErrorMessage am Ende des Protokollformats hinzu.

  9. Wählen Sie Save (Speichern) aus.

So zeigen Sie die Protokolle Ihrer API an
  1. Generieren von Protokollen. Verwenden Sie einen Browser oder curl, um Ihre API aufzurufen.

    $curl https://api-id.execute-api.us-west-2.amazonaws.com/route
  2. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  3. Wählen Sie Ihre HTTP-API.

  4. Wählen Sie unter Monitor (Überwachen) die Option Logging (Protokollierung).

  5. Wählen Sie die Stufe Ihrer API aus, für die Sie die Protokollierung aktiviert haben.

  6. Wählen Sie Protokolle anzeigen in CloudWatch.

  7. Wählen Sie den neuesten Protokoll-Stream, um die Protokolle Ihrer HTTP-API einzusehen.

  8. Ihr Protokolleintrag sollte wie folgt aussehen:

    
                        CloudWatch Protokolliert den Protokolleintrag mit der Integrationsfehlermeldung von Lambda.

Da wir $context.integrationErrorMessage dem Protokollformat hinzugefügt haben, wird in unseren Protokollen eine Fehlermeldung angezeigt, die das Problem zusammenfasst.

Ihre Protokolle enthalten möglicherweise eine andere Fehlermeldung, die darauf hinweist, dass ein Problem mit Ihrem Lambda-Funktionscode vorliegt. Überprüfen Sie in diesem Fall Ihren Lambda-Funktionscode und vergewissern Sie sich, dass Ihre Lambda-Funktion eine Antwort im erforderlichen Format zurückgibt. Wenn Ihre Protokolle keine Fehlermeldung enthalten, fügen Sie $context.error.message und $context.error.responseType Ihrem Protokollformat hinzu, um weitere Informationen zur Fehlerbehebung zu erhalten.

In diesem Fall zeigen die Protokolle, dass API Gateway nicht über die erforderlichen Berechtigungen zum Aufrufen der Lambda-Funktion verfügte.

Wenn Sie eine Lambda-Integration in der API Gateway-Konsole erstellen, konfiguriert API Gateway automatisch die Berechtigungen zum Aufrufen der Lambda-Funktion. Wenn Sie eine Lambda-Integration mithilfe der AWS CLI AWS CloudFormation oder eines SDK erstellen, müssen Sie API Gateway Berechtigungen zum Aufrufen der Funktion erteilen. Die folgenden AWS CLI Beispielbefehle erteilen die Berechtigung für verschiedene HTTP-API-Routen zum Aufrufen einer Lambda-Funktion.

Beispiel – Für die $default Stufe und $default Route einer HTTP-API
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/\$default/\$default"
Beispiel – Für die prod Stufe und test Route einer HTTP-API
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/prod/*/test"

Bestätigen Sie die Funktionsrichtlinie auf der Registerkarte Permissions (Berechtigungen) der Lambda-Konsole.

Versuchen Sie erneut, Ihre API aufzurufen. Sie sollten die Antwort Ihrer Lambda-Funktion sehen.