我想创建一个以lambda函数为目标的AWS eventbridge规则。名为“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函数。
为什么会这样?
将策略Amazon EventBridgeFullAccess附加到角色。
TLDR:需要在lambda和eventbridge上建立权限/信任
解释
这里缺少几件事:
首先:
当您从控制台添加规则和目标时,AWS会执行创建lambda事件源映射的工作。在这种情况下,EventBridge规则应配置为lambda函数的事件源。
create\u event\u source\u mapping lambda API将允许您显式添加此映射。这必须在创建目标和规则后在代码中完成。
第二个:
在put\u rule EventBridge API的参数中,我没有看到提到的RoleArn。规则将使用的角色的ARN需要具有调用目标lambda函数的权限。
我有一个现有的Lambda函数。 我可以使用控制台创建一个以Lambda为目标的新规则。 当我通过控制台这样做时,它会自动创建一个“EventBridge(CloudWatch Events)”触发器,该触发器在Lambda配置屏幕上可见。 规则执行并成功调用Lambda。 尝试使用C#和SDK(nuget包:AWSSDK. EventBridge)自动执行上述步骤,我采取以下步骤: 我成功调用P
我使用Java lambda函数将自定义事件放入AWS EventBridge。此eventbridge的目标是另一个Java lambda函数。如何在目标lambda函数中接收事件?我的意思是我必须使用HandlerRequest方法中的输入类型是什么?尝试使用ScheduledEvent作为输入类型,但没有成功。搜索了许多EventBridge API文档,但没有获得如何从EventBridg
在我的Lambda CDK堆栈中,我想设置一个事件规则,以便每10分钟向我的Lambda发送一个事件。 aws事件规则 这将工作并以lambda为目标部署规则 问题是这只针对没有别名或版本的基本ARN(实际上总是指向$Latest)。AWS控制台中有此选项可用于为目标设置别名或版本(下图),如何在CDK中执行此操作? AWS控制台UI允许别名和版本的目标arn具有别名时配置通过UI
我正在尝试创建一个EventBridge(CloudWatch Events)规则,并将该规则添加为现有Lambda函数的触发器。 代码使用Lambda目标正确创建EventBridge,但它不会将触发器添加到实际的Lambda中。我必须通过AWS Web控制台手动将EventBridge添加到Lambda。 似乎仅仅将Lambda添加为事件规则的目标是不够的。如何将事件规则作为触发器添加到Lam
我有3个独立的堆栈(都在同一个帐户和区域) he AuthStack通过lambda post-confirmation trigger lambda函数进行身份验证,并向EventsBusStack发送一个新的用户事件对象 EventBusStack通过后确认lambda接收newUser对象 然而,使用CDK,我似乎无法找到一种方法来定位位于第三个堆栈中的lambda函数,即RewardsSt
我正在尝试使用CloudFormation创建Lambda函数的新版本。 我想拥有同一个Lambda函数的多个版本,这样我就可以(a)在不同的版本中指向别名——比如DEV和PROD——并且(b)能够回滚到更早的版本 这是我的Lambda版本的定义: 运行“aws cloudformation创建堆栈”时会创建一个版本,但后续的“aws cloudformation更新堆栈”命令不会执行任何操作。没