AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
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
Ähnliche Videos


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