
[英]How to use AWS CDK to set EventBridge Rule Target for Lambda with Alias
[英]EventBridge invokes Lambda as a target
我们正在设计一个解决方案,其中一个 Lambda function 作为源,另一个 Lambda function 作为 EventBridge 的目标。 我读到对于put_rule
部分, RoleArn
具有规则将使用的角色的 ARN,需要具有调用目标 Lambda function 的权限。但是对于 Lambda,我们不使用 IAM 角色,而是使用资源库策略.
问题是,我们在代码中的何处指定基于资源的策略。 在RoleArn
? 目标 Lambda function 的目标部分的字段是什么?
eventclient = boto3.client('events')
response = eventclient.put_rule(
Name='notificationScheduler',
ScheduleExpression='at(2023-02-01T02:30:00)',
State='ENABLED',
Description='schedule notifications reminders '
**RoleArn**='string', ## The ARN for the role which the rule will use needs to have the permission to invoke the target lambda function
)
response = eventclient.put_targets(
Rule='notificationScheduler',
Targets=[{ ??? }]
)
您必须使用 Lambda 资源策略来授予 EventBridge 调用权限,而不是角色。
文档:Amazon SQS、Amazon SNS、Lambda、CloudWatch Logs 和 EventBridge 总线目标不使用角色,必须通过资源策略授予对 EventBridge 的权限。 API 网关目标可以使用资源策略或 IAM 角色。
使用AddPermission API 创建 Lambda 权限(= 资源策略):
lambdaclient.add_permission(FunctionName=func_name, StatementId="MyPermissionId", Action="lambda:Invoke", Principal="events.amazonaws.com")
通过 ARN 添加 Lambda function 作为规则目标:
eventclient.put_targets(Rule="notificationScheduler", Targets=[{"Id": "MyLambdaTarget", "Arn": func_arn }])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.