Ich habe eine Amazon-CloudWatch-Events-Regel (CloudWatch Events) mithilfe von Vorlagen für AWS CloudFormation (CloudFormation) oder der AWS Command Line Interface (AWS CLI) erstellt. Ich habe versucht, ein AWS-Lambda-Ziel aufzurufen, aber das Ziel wurde nicht aufgerufen.
Kurzbeschreibung
Die CloudWatch-Events-Regel, die mit CloudFormation-Vorlagen oder der AWS-CLI erstellt wurde, muss CloudWatch-Events-Regelberechtigungen explizit gewähren, um das Lambda-Ziel aufzurufen.
Lösung
Sie können die CloudWatch-Events-Regelberechtigungen, die zum Aufrufen Ihres Lambda-Ziels erforderlich sind, entweder in der CloudFormation-Vorlage oder in der AWS-CLI hinzufügen.
Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.
Option 1: Berechtigungen in der CloudFormation-Vorlage hinzufügen
Verwenden Sie die Ressource AWS::Lambda::Permission, um der Zugriffsrichtlinie Ihrer Lambda-Funktion eine Richtlinienanweisung hinzuzufügen.
Wichtig: Stellen Sie in der CloudFormation-Vorlage sicher, dass Sie:
- MyLambdaFunction durch den logischen Namen der Lambda-Funktion ersetzen.
- MyEventRule durch den logischen Namen der Ereignisregel ersetzen.
JSON
"LambdaInvokePermission":
{
"Type": "AWS::Lambda::Permission",
"Properties": {
"FunctionName": {
"Fn::GetAtt": [
"MyLambdaFunction",
"Arn"
]
},
"Action": "lambda:InvokeFunction",
"Principal": "events.amazonaws.com",
"SourceArn": {
"Fn::GetAtt": [
"EventRule",
"Arn"
]
}
}
}
YAML
LambdaInvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName:
Fn::GetAtt:
- MyLambdaFunction
- Arn
Action: "lambda:InvokeFunction"
Principal: "events.amazonaws.com"
SourceArn:
Fn::GetAtt:
- "EventRule"
- "Arn"
Option 2: Berechtigungen mithilfe der AWS-CLI hinzufügen
Geben Sie in der Befehlszeile den folgenden Befehl ein.
aws lambda add-permission
--statement-id "TrustCloudWatchToInvokeMyLambdaFunction" \
--action "lambda:InvokeFunction" \
--principal "events.amazonaws.com" \
--function-name "arn:aws:lambda:<region>:<account-id>:function:<function-name>"
\
--source-arn "arn:aws:events:<region>:<account-id>:rule/<rule-name>"
Ähnliche Informationen
Verwenden von AWS Lambda mit AWS CloudFormation