我目前在 lambda 中有一个函数,当调用它时,它会向调用它的用户发送一条消息。2 天后,我想发送后续消息。发送实际消息的所有代码都可以正常工作。
由于自动缩放功能,我正在使用 Lambda,理想情况下,我希望避免设置一个单独的数据库来存储 userId、原始交互的时间戳(这样我就可以计算出跟进时间)并遵循2天后up消息。其原因是由于缩放,因为我不确定峰值何时会出现。这是一个短框架项目,但它期待高参与度,但在未知的、不同的时间。
我最初考虑 SNS 使用数据调用另一个 lambda 函数,但是,后来我发现 SNS 不支持预定消息。理想情况下,我也不想涉及轮询其他服务。有什么好的解决方案吗?
我意识到不使用数据库是一个很大的限制,如果我必须使用一个,那么我将使用一个,但仍然不必轮询会很有用(我想我可以安排一个 lambda 函数并在时间戳上创建一个索引发电机)
最近宣布
AWS Step Functions
的服务可以帮助您实施您所描述的内容。该服务可以协调您的应用程序组件的执行,例如Lambda
功能。它为您提供了一个图形控制台,您可以在其中对它们之间的依赖关系进行建模,并定义一个捕获应用程序工作流的有限状态机。您可以在以下链接中找到有关该服务的更多信息:AWS 步骤函数
宣布 AWS Step Functions
回到你的情况。Step Functions 为您提供一种
Wait
状态,该状态会延迟状态机在指定时间内继续运行。因此,您的应用程序工作流程可能如下所示:该
FirstState
状态将执行一个 lambda 函数send a message to a user who invoked it
。然后,它将等待 2 天,由wait_using_seconds
state 表示,最后它将执行一个 lambda 函数“发送后续消息”,作为FinalState
state。状态机的定义写成
Amazon States Language
: