kiw*_*ris 20 amazon-web-services aws-cloudformation amazon-iam aws-lambda aws-event-bridge
我正在尝试创建一个以 Lambda 函数作为目标的 AWS Eventbridge 规则。我可以很好地添加规则和目标,但是当我尝试通过RoleArnCloudformation 堆栈部署设置 lambda 权限时失败,并显示:
RoleArn is not supported for target arn:aws:lambda:us-east-1:1234567890:function:contacts-lambda-consume-new-customer. (Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException; Request ID: xxxxx-ec5d-45e8-b45d-xxxxxx; Proxy: null)
这是我的 Cloudformation 堆栈代码:
EventRuleNewCustomer:
Type: AWS::Events::Rule
Properties:
Name: new-customer
EventBusName: myEventBus
# RoleArn: !Join ["", ["arn:aws:iam::",!Ref "AWS::AccountId", ":role/my-role"] ] #no error but doesn't add the permissions
Description: "New customer event rule"
EventPattern:
detail-type:
- "NewCustomer"
State: "ENABLED"
Targets:
-
Arn: !Join ["", ["arn:aws:lambda:" ,!Ref "AWS::Region", ":", !Ref "AWS::AccountId", ":function:contacts-lambda-consume-new-customer"] ]
Id: "NewCustomer"
RoleArn: !Join ["", ["arn:aws:iam::",!Ref "AWS::AccountId", ":role/my-role"] ]
Run Code Online (Sandbox Code Playgroud)
我尝试RoleArn在规则本身上设置 a ,这在创建堆栈时不会给出错误,但也不会添加执行 Lambda 所需的权限。
我使用的解决方法是在 AWS Eventbridge 控制台中编辑 lambda 目标。这似乎在幕后做了一些魔法,为 Eventbridge 添加正确的权限,以便能够执行 lambda
任何想法不胜感激。
Mar*_*cin 33
这似乎在幕后做了一些魔法,为 Eventbridge 添加正确的权限,以便能够执行 lambda
对于 lambda,权限是使用Lambda 的基于资源的策略设置的。
因此,您应该在 CloudFormation 中使用AWS::Lambda::Permission来允许 EventBridge 调用您的函数,而不是使用RoleArn.
因此,您的权限将如下所示(仅作为示例):
EventBridgeLambdaPermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !GetAtt function.Arn
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceArn: !GetAtt EventRuleNewCustomer.Arn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16640 次 |
| 最近记录: |