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?

Lesedauer: 3 Minute
0

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:

**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:

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