我正在尝试创建一个以 Lambda 函数为目标的 AWS Eventbridge 规则。我可以很好地添加规则和目标,但是当我尝试通过RoleArn
Cloudformation 堆栈部署设置 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"] ]
我尝试RoleArn
在规则本身上设置 a ,它在创建堆栈时不会出错,但也没有添加执行 Lambda 所需的权限。
我正在使用的解决方法是在 AWS Eventbridge 控制台中编辑 lambda 目标。这似乎在幕后做了一些魔术,为 Eventbridge 添加了正确的权限,以便能够执行 lambda
任何想法都将不胜感激。