Direkt zum Inhalt

Ich habe meine Lambda-Integration in API Gateway mithilfe einer Stufenvariablen definiert. Warum erhalte ich einen „Internal server error“ und einen 500-Statuscode, wenn ich die API-Methode aufrufe?

Lesedauer: 3 Minute
0

Ich habe meine API in Amazon API Gateway so eingerichtet, dass sie mithilfe einer Stufenvariablen eine AWS-Lambda-Funktion aufruft. Wenn ich die API-Methode aufrufe, erhalte ich einen „Internal server error“ und einen 500-Statuscode.

Kurzbeschreibung

Wenn die ressourcenbasierte Richtlinie der Lambda-Funktion keine Berechtigungen für die API zum Aufrufen der Funktion enthält, gibt API Gateway eine interne Serverfehlermeldung zurück.

Wenn du eine Stufenvariable erstellst, um eine Funktion über die API aufzurufen, musst du die erforderlichen Berechtigungen auf eine der folgenden Weisen hinzufügen:

Hinweis: Wenn du mithilfe der API-Gateway-Konsole eine API-Gateway-API mit Standard-Lambda-Integration erstellst, fügt die Konsole die erforderlichen Berechtigungen automatisch hinzu.

Lösung

Hinweis: Wenn du beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhältst, stelle sicher, dass du die neueste AWS-CLI-Version verwendest.

Überprüfe die Amazon CloudWatch Logs, um sicherzustellen, dass der Fehler durch fehlende Berechtigungen verursacht wird

Bei REST-APIs und WebSocket-APIs

Überprüfe die API-Gateway-Ausführungsprotokolle. Wenn du eine Fehlermeldung wie Invalid permissions on Lambda function siehst, sind fehlende Berechtigungen die Ursache für den Fehler. Weitere Informationen findest du unter „Wie aktiviere ich CloudWatch Logs zur Fehlerbehebung bei meiner API-Gateway-REST- oder WebSocket-API?

Für HTTP-APIs

Überprüfe die API-Gateway-Zugriffsprotokolle. Wenn eine Fehlermeldung mit dem Inhalt Invalid permissions angezeigt wird, sind fehlende Berechtigungen die Ursache des Fehlers. Weitere Informationen findest du unter Konfigurieren der Protokollierung für eine HTTP-API.

Hinweis: Die integrationErrorMessage-Kontextvariable ($context.integrationErrorMessage) enthält die zu überprüfende Fehlermeldung.

Aktualisiere die ressourcenbasierte IAM-Richtlinie der Lambda-Funktion, damit sie API Gateway die Aufrufberechtigung erteilt

Anweisungen für die Lambda-Konsole

Befolge die Anweisungen unter Funktionszugriff auf AWS-Services gewähren.

Im Folgenden findest du ein Beispiel für eine ressourcenbasierte Richtlinie, die API Gateway eine Aufrufberechtigung erteilt:

{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "ServiceAllowListing",
            "Effect": "Allow",
            "Principal": {
              "Service": "apigateway.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:<AWS_Region>:<AWS_Account_Number>:function:<LambdaFunctionName>",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:execute-api:<AWS_Region>:<AWS_Account_Number>:<API_ID>"
              }
            }
        }
     ]
}

AWS CLI 

Führe den folgenden AWS-CLI-Befehl add-permission aus:

Wichtig: Ersetze die folgenden Variablen, bevor du den Befehl ausführst:

aws lambda add-permission --function-name arn:aws:lambda:region:account-id:function:function-name --statement-id statement-id-guid --action lambda:InvokeFunction --source-arn arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1

Eine IAM-Rolle erstellen, die API Gateway übernehmen kann, um die Lambda-Funktion aufzurufen

Befolge die Anweisungen im API Gateway-Berechtigungsmodell, um eine API aufzurufen.

Hinweis: Weitere Informationen findest du unter Steuern des Zugriffs auf eine API mit IAM-Berechtigungen.

Ähnliche Informationen

Arbeiten mit Stufen für HTTP-APIs

Einrichten von Stufenvariablen für eine REST-API-Bereitstellung

Verwendung von Amazon-API-Gateway-Stufenvariablen

Verwendung von API-Gateway-Stufenvariablen zur Verwaltung von Lambda-Funktionen

Erstellen einer API-Gateway-REST-API mit Lambda-Integration