如何使用AWS DynamoDB和AWS SQS创建作业队列?

时间:2018-06-06 22:35:31

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-sqs

我有一个lambda函数,我想根据作业参数以特定的间隔触发。例如,我希望能够添加像

这样的工作参数
{"run_at": "2018-06-08-10-10-30", "params": {"metadata":"xyz"}}

所以我希望我的lambda函数在run_at时间被触发,在那一分钟,params被作为事件传递给我的lambda函数。

这可能吗?

2 个答案:

答案 0 :(得分:1)

是的,有可能。您可以使用DynamoDB的生存时间(时间戳列设置为TTL),表中的记录将在到期时被删除,删除的记录将显示在中DynamoDB流。一旦它出现在流中,您就可以设置一个Lambda来触发进一步处理(在SQS中排队,发布到SNS等)。 StreamTTL的文档。

简而言之,您可以通过在DynamoDB中添加记录来记录作业,该记录包含事件发生的时间戳(时间戳是TTL)。然后,一旦达到时间戳,DynamoDB将自动删除记录并将其放入将触发Lambda启动事件的流中。

请注意,记录中的所有活动(插入/更新/删除)都将在流中提供。所以你可能想在Lambda之前做一些条件逻辑,只处理DELETE记录。

答案 1 :(得分:0)

使用Schedule Expressions可以轻松获取特定间隔部分。您可以使用第一个Lambda函数将不同的参数传递给特定的Lambda函数,然后调用共享函数。根据您希望通过设计实现的目标,其他方法也是可能的。