首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用以lambda函数为目标的boto3创建事件桥规则?

如何使用以lambda函数为目标的boto3创建事件桥规则?
EN

Stack Overflow用户
提问于 2021-04-21 17:33:27
回答 2查看 5.3K关注 0票数 2

我希望创建一个以lambda函数为目标的AWS事件桥规则。名为'StartInstance‘的lambda函数已经通过控制台创建。

我已经创建了一个python脚本,它使用boto3库来创建这个事件桥规则。我将向这个规则传递一个cron表达式,它将在特定的日期和时间调用lambda函数。

下面是成功运行的python脚本的代码:

代码语言:javascript
复制
import boto3

eventclient = boto3.client('events')

response = eventclient.put_rule(
    Name='ec2scheduler',
    ScheduleExpression='cron(40 16 21 4 ? 2021)',
    State='ENABLED',
    Description='schedule ec2 start/stop'
)

response = eventclient.put_targets(
    Rule='ec2scheduler',
    Targets=[
        {
            'Id': 'StartInstance',
            'Arn': 'arn:aws:lambda:us-east-1:965477548122:function:StartInstance'
        }
    ]
)

正如您所看到的,传递给规则的cron表达式是:cron(40 16 21 4 ? 2021),它应该在格林尼治时间16:40的日期21-4月-2021年调用'StartInstance‘lambda函数。但是,在当时没有调用lambda函数。我也看到在cloudwatch日志中没有为lambda函数生成任何日志。当我通过控制台看到所需的目标和cron表达式时,上面创建的事件桥规则在我看来还不错。但是,当时间到来时,规则不会调用lambda函数。

为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 16:03:58

TLDR:需要在lambda和事件桥上建立权限/信任

解释

这里少了几样东西:

第一:

当您从控制台添加规则和目标时,AWS完成了创建lambda事件源映射的工作。在这种情况下,应该将EventBridge规则配置为lambda函数的事件源。

映射 lambda将允许您显式地添加此映射。这必须在您创建目标和规则之后在代码中完成。

第二:

规则 EventBridge API的参数中,我没有看到提到的RoleArn。规则将使用的角色的ARN需要具有调用目标lambda函数的权限。

票数 1
EN

Stack Overflow用户

发布于 2021-07-27 14:01:39

将策略AmazonEventBridgeFullAccess附加到角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67200794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档