Wie behebe ich die Fehler „Invalid permissions on Lambda function“, die ich von API-Gateway-REST-APIs erhalte?
Ich möchte den Fehler „Invalid permissions on Lambda function“ beheben, wenn ich meine AWS-Lambda-Funktion von einer Amazon-API-Gateway-REST-API aus aufrufe.
Kurzbeschreibung
Wenn deine API-Gateway-REST-API deine Lambda-Funktion ohne Genehmigung aufruft, erhältst du den Fehler „Invalid permissions on Lambda function“.
Wenn du die CloudWatch-Protokollierung für deine REST-API einrichtest, protokolliert API Gateway auch die folgende Fehlermeldung für REST-APIs mit einer Lambda-Integration:
„Sending request to https://lambda.region.amazonaws.com/2015-03-31/functions/arn:aws:lambda:region:############:function:example-function/invocations
Execution failed due to configuration error: Invalid permissions on Lambda function (Ungültige Berechtigungen für die Lambda-Funktion)
Verfahren abgeschlossen mit Status: 500“.
Für REST-APIs mit einem Lambda-Genehmiger erhältst du die folgende Fehlermeldung:
„Sending request to https://lambda.region.amazonaws.com/2015-03-31/functions/arn:aws:lambda:region:############:function:example-function/invocations
Execution failed due to configuration error: Invalid permissions on Lambda function (Ungültige Berechtigungen für die Lambda-Funktion)
Execution failed due to configuration error: Authorizer error“.
Um dieses Problem zu beheben, musst du deiner REST-API die Lambda-Berechtigung Aufrufen hinzufügen.
Hinweis: Wenn du die Fehlermeldung „401 Unauthorized“ erhältst, siehe Warum erhalte ich den API-Gateway-Fehler „401 Unauthorized“, nachdem ich einen Lambda-Genehmiger erstellt habe?
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Einer REST-API mit einer Lambda-Integration die Lambda-Berechtigung „Aufrufen“ hinzufügen
Du kannst entweder die API Gateway-Konsole, eine AWS-CloudFormation-Vorlage oder die AWS-CLI verwenden, um die Berechtigung Aufrufen hinzuzufügen.
Hinweis: Du kannst auch die Fehlermeldung „Execution failed due to configuration error: Invalid permissions on Lambda function Method completed with status: 500“ in den folgenden Szenarien erhalten:
- Du versuchst, das API-Gateway von der API-Gateway-Testkonsole aus aufzurufen.
- Du rufst das API-Gateway von einer Phase aus auf, die sich von der Stufe unterscheidet, die du in der Aufruf-URL benannt hast.
Um dieses Problem zu vermeiden, verwende einen Platzhalter (*) für den Schrittnamen in deiner CloudFormation-Vorlage und deinem AWS-CLI-Befehl.
API-Gateway-Konsole verwenden
Führe die folgenden Schritte aus:
- Öffne die API Gateway-Konsole.
- Wähle im Navigationsbereich APIs und dann deine REST-API aus.
- Wähle Ressourcen und dann die HTTP-Methode aus.
- Wähle Methodenausführung und dann Integrationsanforderung aus.
- Wähle als Integrationstyp die Option Lambda-Funktion aus.
- Erweitere die Dropdown-Liste Lambda-Region und wähle dann die AWS-Region aus, in der sich deine Lambda-Funktion befindet.
- Wähle die Dropdown-Lliste der Lambda-Funktion und dann deine Lambda-Funktion aus.
- Wähle Speichern aus.
- Wähle API bereitstellen aus.
Eine CloudFormation-Vorlage verwenden
Füge der CloudFormation-Vorlage den folgenden Codeausschnitt hinzu:
SampleApiPermission: Type: AWS::Lambda::Permission Properties: Action: "lambda:InvokeFunction" FunctionName: !Ref ExampleLambdaFunction Principal: "apigateway.amazonaws.com" SourceArn: !Sub "arn:aws:execute-api:{AWS::Region}:{AWS::AccountId}:example-api-id/*/example-method/example-resource"
Hinweis: Ersetze FunctionName durch den Namen deiner Lambda-Funktion, SourceArn durch deinen API-Amazon-Ressourcennamen (ARN) und example-api-id durch deine API-ID.
Weitere Informationen findest du unter CloudFormation-Vorlagen-Snippets.
Verwendung der AWS CLI
Führe den folgenden add-permission-Befehl aus:
aws lambda add-permission \--function-name "FUNCTION_NAME" \ --source-arn "arn:aws:execute-api:API_GW_REGION:YOUR_ACCOUNT:API_GW_ID/*/METHOD/RESOURCE" \ --principal apigateway.amazonaws.com \ --statement-id STATEMENT_ID \ --action lambda:InvokeFunction
**Hinweis:**Ersetze FUNCITON_NAME durch den Namen deiner Lambda-Funktion, den Beispielquellen-ARN durch deinen API-ARN und STATEMENT_ID durch eine Statement-ID, die die Anweisung eindeutig identifiziert.
Führe den folgenden Befehl aus, um die Berechtigung nur für eine bestimmte Phase zu erteilen:
--source-arn "arn:aws:execute-api:API_GW_REGION:YOUR_ACCOUNT:API_GW_ID/STAGE_NAME/METHOD/RESOURCE"
Hinweis: Ersetze den Beispielquellen-ARN durch deinen API-ARN und STAGE_NAME durch deinen Stufennamen.
Einer REST-API mit einem Lambda-Genehmiger eine Lambda-Aufrufberechtigung hinzufügen
Du kannst die API-Gateway-Konsole, eine CloudFormation-Vorlage oder einen AWS-CLI-Befehl verwenden, um die Berechtigung Aufrufen hinzuzufügen.
API-Gateway-Konsole verwenden
Führe die folgenden Schritte aus:
- Erstelle eine IAM-Rolle für API-Gateway und erstelle dann eine Richtlinie, die die Aktion lambda:InvokeFunction zulässt.
Hinweis: Notiere dir den ARN der IAM-Rolle, der in einem späteren Schritt verwendet werden soll. Eine Beispielrichtlinie findest du unter API-Gateway-Berechtigungsmodell für den Aufruf einer API. - Öffne die API Gateway-Konsole.
- Wähle im Navigationsbereich APIs und dann deine REST-API aus.
- Wähle Genehmiger und dann den Lambda-Genehmiger aus.
- Wähle Bearbeiten aus.
- Gib für Lambda Invoke Role den ARN der IAM-Rolle ein.
- Wähle Speichern aus.
- Wähle API bereitstellen aus.
Eine CloudFormation-Vorlage verwenden
Füge der CloudFormation-Vorlage den folgenden Code-Snippet hinzu:
SampleApiAuthPermission: Type: AWS::Lambda::Permission Properties: Action: "lambda:InvokeFunction" FunctionName: !Ref ExampleLambdaFunction Principal: "apigateway.amazonaws.com" SourceArn: !Sub "arn:aws:execute-api:{AWS::Region}:{AWS::AccountId}:example-api-id/authorizers/example-auth-id"
Hinweis: Ersetze FunctionName durch den Namen deiner Lambda-Funktion, example-api-id durch deine API-ID und example-auth-id durch deine Lambda-Genehmiger-ID.
Verwendung der AWS CLI
Führe den folgenden add-permission-Befehl aus:
aws lambda add-permission \--function-name "FUNCTION_NAME" \ --source-arn "arn:aws:execute-api:API_GW_REGION:YOUR_ACCOUNT:API_GW_ID/authorizers/AUTHORIZER_ID" \ --principal apigateway.amazonaws.com \ --statement-id STATEMENT_ID \ --action lambda:InvokeFunction
**Hinweis:**Ersetze FUNCITON_NAME durch den Namen deiner Lambda-Funktion, den Beispielquellen-ARN durch deinen API-ARN und STATEMENT_ID durch eine Statement-ID, die die Anweisung eindeutig identifiziert.
Ähnliche Informationen
Ressourcenbasierte IAM-Richtlinien in Lambda anzeigen
Wie richte ich die Zugriffsprotokollierung für API Gateway ein?
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten
AWS OFFICIALAktualisiert vor einem Jahr
