Amazon web services 如何使用以lambda函数为目标的boto3创建eventbridge规则?
我想创建一个以lambda函数为目标的AWS eventbridge规则。名为“StartInstance”的lambda函数已通过控制台创建 我已经创建了一个python脚本,它使用boto3库来创建这个eventbridge规则。我将向该规则传递一个cron表达式,该表达式将在特定日期和时间调用lambda函数 下面是成功运行的python脚本代码:Amazon web services 如何使用以lambda函数为目标的boto3创建eventbridge规则?,amazon-web-services,aws-lambda,boto3,aws-event-bridge,Amazon Web Services,Aws Lambda,Boto3,Aws Event Bridge,我想创建一个以lambda函数为目标的AWS eventbridge规则。名为“StartInstance”的lambda函数已通过控制台创建 我已经创建了一个python脚本,它使用boto3库来创建这个eventbridge规则。我将向该规则传递一个cron表达式,该表达式将在特定日期和时间调用lambda函数 下面是成功运行的python脚本代码: import boto3 eventclient = boto3.client('events') response = eventcli
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)
,它应该在2021年4月21日格林尼治标准时间16:40调用“StartInstance”lambda函数。但是,当时没有调用lambda函数。我在cloudwatch日志中也没有看到为lambda函数生成的日志。当我通过AWS eventbridge控制台看到上面创建的eventbridge规则时,我觉得它很好,控制台中可以看到所需的目标和cron表达式。但该规则不会在时机成熟时调用lambda函数
为什么会发生这种情况?TLDR:需要在lambda和eventbridge上建立权限/信任 解释 这里缺少两件事: 第一: 从控制台添加规则和目标时,AWS将执行创建lambda事件源映射的任务。在这种情况下,应将EventBridge规则配置为lambda函数的事件源 lambdaapi将允许您显式添加此映射。这必须在创建目标和规则后在代码中完成 第二:
在EventBridgeAPI的参数中,我没有看到提到RoleArn。规则将使用的角色的ARN需要具有调用目标lambda函数的权限。您是否通过控制台设置lambda?您是否以角色的形式授予lambda权限?您是否已在事件桥中创建了规则,该事件桥具有告诉何时调用lambda和规则目标作为lambda函数的corn表达式?