以编程方式安排一个AWS Lambda执行一次



我有两个AWS Lamdbda函数,我希望Lambda A确定某个时间点,如4。2022年5月10:00。然后我希望Lambda B被安排在这个特定的时间点运行。

我可能能够通过用Lambda a以编程方式创建一个AWS eventbride规则并使用cron模式来匹配我的时间点来实现这一点。在Lambda B内部,我需要删除该规则,因为它是一次性使用的。

你们能想出一种更优雅的方式来实现这一点吗?

谢谢你的智慧!

编辑:

我的时间点是动态的。我调用公共的API来查找Lambda B运行的点,所以我不能直接使用EventBridge。我计划每天运行一次Lambda A,看看是否有必要运行一次新的Lambda B。

[编辑2022年11月]:EventBridge调度器

新的EventBridge调度程序支持事件的一次性调度。事件将在您作为计划表达式传递的日期和时间调用:boto3 EventScheduler客户端的create_scheduleAPI中的at(yyyy-mm-ddThh:mm:ss)


以下是在任意时间点安排Lambda运行的更多选项:

Step函数

三态Step函数协调两个Lambda。Lambda A获取并输出时间戳。等待状态等待时间戳。然后Lambda B跑了。

这种方法是精确的。注意:标准工作流执行的持续时间最长为一年,因此可以适应长时间的等待。

DynamoDB流+TTL

创建一个具有TTL字段和启用Dynamo DB Streams的Dynamo DB表。将Lambda B设置为Streams处理器。Lambda A将时间戳为TTL的记录写入表中。TTL时间戳通过后不久,DynamoDB将触发Lambda B.

这种方法不会给你第一种方法的精度,但如果你有大量的事件,它会更便宜。

最新更新