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?
Ich habe meine Amazon API Gateway-API so eingerichtet, dass sie mithilfe einer Stufenvariablen eine AWS-Lambda-Funktion aufruft. Warum erhalte ich einen „Internen Serverfehler“ und einen 500-Statuscode, wenn ich die API-Methode aufrufe. Wie behebe ich den Fehler?
Kurzbeschreibung
Wenn dieressourcenbasierte RichtlinieIhrer Lambda-Funktion keine Berechtigungen für Ihre API zum Aufrufen der Funktion enthält, gibt API Gateway eineinterne Serverfehlermeldung zurück.
Wenn Sieeine Stufenvariable erstellen, um eine Funktion über Ihre API aufzurufen, müssen Sie die erforderlichen Berechtigungen auf eine der folgenden Weisen hinzufügen:
- Aktualisieren Sie die ressourcenbasierte AWS Identity and Access Management (IAM)-Richtlinie Ihrer Lambda-Funktion so, dass sie API Gateway die Aufruf-Berechtigung erteilt.
-oder- - Erstellen Sie eine IAM-Rolle, die API Gateway annehmen kann, um Ihre Lambda-Funktion aufzurufen.
**Hinweis:**Wenn Sie eineAPI Gateway-APImit standardmäßiger Lambda-Integration erstellen, fügt die Konsole die erforderlichen Berechtigungen automatisch hinzu.
Behebung
**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.
Überprüfen Sie Ihre Amazon-CloudWatch-Logs, um sicherzustellen, dass der Fehler durch fehlende Berechtigungen verursacht wird
FürREST-APIsundWebSocket-APIs
Überprüfen Sie Ihre API-Gateway-Ausführungsprotokolle. Wenn Sie eine Fehlermeldung wieUngültige Berechtigungen für die Lambda-Funktionsehen, sind fehlende Berechtigungen die Ursache für den Fehler. Weitere Informationen finden Sie unterWie aktiviere ich CloudWatch-Logs zur Fehlerbehebung bei meiner API-Gateway-REST- oder WebSocket-API?
FürHTTP-APIs
Überprüfen Sie Ihre API-Gateway-Zugriffsprotokolle. Wenn eine Fehlermeldung mit dem InhaltUngültige Berechtigungenangezeigt wird, sind fehlende Berechtigungen die Ursache des Fehlers. Weitere Informationen finden Sie unterKonfigurieren der Protokollierung für eine HTTP-API.
Hinweis:DieIntegrationsFehlermeldung-Kontextvariable($context.IntegrationErrorMessage) enthält die zu überprüfende Fehlermeldung.
So aktualisieren Sie die ressourcenbasierte IAM-Richtlinie Ihrer Lambda-Funktion, damit sie API Gateway die Aufrufberechtigung erteilt
Anweisungen für die Lambda-Konsole
Folgen Sie den Anweisungen unterFunktionszugriff auf AWS-Servicesgewähren.
Im Folgenden finden Sie 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-Anweisungen
Führen Sie den folgenden AWS-CLI-BefehlErlaubnis hinzufügenaus:
**Wichtig:**Ersetzen Sie die folgenden Variablen, bevor Sie den Befehl ausführen:
- Fürarn:aws:lambda:region:account-id:function:function-namegeben Sie denAmazon-Ressourcennamen (ARN) Ihrer Lambda-Funktion ein.
- Geben Sie fürstatement-id-guideine eindeutigeStatement-IDein. Zum Beispielapi-gateway-aufrufen.
- Geben Sie fürarn:aws:execute-api:region:account-id:api-id/*/get/LambdasV1den ARN der API-Gateway-Ressource ein, die Ihre Funktion aufruft. Das ARN-Format für HTTP-und REST-APIs finden Sie unterRessourcenformat der Berechtigungen zur API-Ausführung in API Gateway. Das ARN-Format für WebSocket-APIs finden Sie unterVerwendung 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
So erstellen Sie eine IAM-Rolle, die API Gateway zum Aufrufen Ihrer Lambda-Funktion annehmen kann
Folgen Sie den Anweisungen imAPI Gateway-Berechtigungsmodell, um eine API aufzurufen.
**Hinweis:**Weitere Informationen finden Sie unterSteuern des Zugriffs auf eine API mit IAM-Berechtigungen.
Weitere 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
0Erstellen einer API-Gateway-REST-API mit Lambda-Integration
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren