【发布时间】:2021-07-15 22:34:17
【问题描述】:
我想创建一个以 lambda 函数为目标的 AWS 事件桥规则。名为“StartInstance”的 lambda 函数已通过控制台创建。
我创建了一个 python 脚本,它使用 boto3 库来创建这个 eventbridge 规则。我将一个 cron 表达式传递给此规则,它将在特定日期和时间调用 lambda 函数。
下面是成功运行的python脚本代码:
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 函数。
为什么会这样?
【问题讨论】:
-
您是否通过控制台安排 lambda?您是否以角色的形式授予 lambda 权限?你有没有在事件桥中创建规则,它有玉米表达式,告诉什么时候调用 lambda 和规则的目标作为你的 lambda 函数?
标签: amazon-web-services aws-lambda boto3 aws-event-bridge