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?
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:
- Aktualisiere die ressourcenbasierte AWS Identity and Access Management (IAM)-Richtlinie der Lambda-Funktion so, dass sie API Gateway die Aufruf-Berechtigung erteilt.
- Erstelle eine IAM-Rolle, die API Gateway übernehmen kann, um die Lambda-Funktion aufzurufen.
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:
- Gib für arn:aws:lambda:region:account-id:function:function-name den Amazon-Ressourcennamen (ARN) der Lambda-Funktion ein.
- Gib fürstatement-id-guid eine eindeutige Anweisungs-IDein. Zum Beispiel api-gateway-invoke.
- Gib für arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1 den ARN der API-Gateway-Ressource ein, die die Funktion aufruft. Das ARN-Format für HTTP- und REST-APIs findest du unter Ressourcenformat der Berechtigungen zur API-Ausführung in API Gateway. Das ARN-Format für WebSocket-APIs findest du unter Verwendung der IAM-Autorisierung.
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
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr