为什么我使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则无法调用 Amazon Lambda?

为什么我使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则无法调用 Amazon Lambda?

我使用 Amazon CloudFormation(CloudFormation)模板或 Amazon 命令行界面(Amazon CLI)创建了 Amazon CloudWatch Events(CloudWatch Events)规则。我尝试调用 Amazon Lambda 目标,但该目标未被调用。
为什么我使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则无法调用 Amazon Lambda? 2023-08-20 21:57:41
为什么我使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则无法调用 Amazon Lambda? 0
为什么我使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则无法调用 Amazon Lambda?
## 简短描述 使用 CloudFormation 模板或 Amazon CLI 创建的 CloudWatch Events 规则必须明确授予 CloudWatch Events 规则权限才能调用 Lambda 目标。 ## 解决方法 您可以在 CloudFormation 模板或 Amazon CLI 中添加调用 Lambda 目标所需的 CloudWatch Events 规则权限。 **注意**:如果在运行 Amazon CLI 命令时收到错误,[请确保您使用的是最新版本的 Amazon CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html?trk=cndc-detail)。 ### 选项 1:在 CloudFormation 模板中添加权限 使用 [AWS::Lambda::Permission](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html?trk=cndc-detail) 资源将策略语句添加到您的 Lambda 函数的访问策略。 **重要提示**:在 CloudFormation 模板中,请确保: * 将 **MyLambdaFunction** 替换为 Lambda 函数的逻辑名称。 * 将 **MyEventRule** 替换为事件规则的逻辑名称。 ```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" ``` ### 选项 2:使用 Amazon CLI 添加权限 在显示命令提示符时,输入以下命令。 ``` 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>" ``` *** ## 相关信息 [通过 Amazon CloudFormation 使用 Amazon Lambda](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html?trk=cndc-detail)
contact-us