我有两个 AWS-Lambda 函数,我希望 Lambda A 确定某个时间点,例如 2022 年 5 月 4 日 10:00。然后我希望 Lambda B 被安排在这个特定的时间点运行。
我可能可以通过使用 Lambda A 以编程方式创建 AWS eventbrigde 规则并使用 cron 模式来匹配我的时间点来实现此目的。在 Lambda B 内部,我需要删除该规则,因为它是一次性使用的。
你们中有人能想出一种更优雅的方式来实现这一目标吗?
感谢您的智慧!
Edit:
我的时间点是动态的。我调用公共API来找到Lambda B运行的点,所以我不能直接使用EventBridge。我计划每天运行 Lambda A 一次,看看是否有必要运行新的 Lambda B。
[2022 年 11 月编辑]:EventBridge Scheduler
The new 事件桥调度程序 https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html支持一次性时间表 https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#one-time对于事件。该事件将在您作为计划表达式传递的日期和时间被调用:at(yyyy-mm-ddThh:mm:ss)
在boto3中事件调度器 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/scheduler.html#EventBridgeScheduler.Client.create_schedule客户的create_schedule
API.
以下是用于安排 Lambda 在任意时间点运行的更多选项:
阶跃函数
三态阶跃函数 https://docs.aws.amazon.com/step-functions/latest/dg/how-step-functions-works.html协调两个 Lambda。 Lambda A 获取并输出时间戳。 A等待状态 https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html等待直到时间戳过去。然后 Lambda B 运行。
这个方法是精确的。注意:标准工作流程 https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html处决的期限长达一年,因此可以承受长时间的等待。
DynamoDB 流 + TTL
创建一个 DynamoDB 表TTL字段 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html and Dynamodb 流 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html已启用。将 Lambda B 设置为流处理器。 Lambda A 将一条记录写入表中,时间戳为 TTL。 TTL 时间戳过去后不久,DynamoDB 将触发 Lambda B。
此方法不会为您提供第一种方法的精度,但如果您有大量事件,则会更便宜。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)