使用 AWS SQS FIFO 队列作为 lambda 触发器事件源和 Step 函数处理来保留 FIFO 处理

问题描述 投票:0回答:2

是否可以通过配置设置一个带有 lambda 触发器的 SQS FIFO 队列,以使用 lambda 调用步骤函数,同时在整个处理过程中保留顺序?因此,这意味着在运行状态下不会并行触发多个步骤函数,而是保留 FIFO 处理,因此任何新的步骤函数执行都需要等到步骤函数完成才能处理下一批记录。

这是我可以通过配置实现的还是需要其他途径?

amazon-web-services aws-lambda amazon-sqs aws-step-functions
2个回答
1
投票

我认为如果您使用 SQS 和 Lambda 之间的内置集成,这是不可能的 - 一旦您的函数执行退出(一旦完成启动步骤函数),AWS Lambda 将获取下一条消息。

如果您的执行时间相对较短,并且您愿意支付 Lambda 执行时间,您可以在返回之前在 Lambda 函数中轮询或等待 Step Function 完成。但是,如果您有大量消息需要处理或者您的 Step 函数需要一些时间才能完成,这可能会很昂贵。


0
投票

是的。像这样的东西可能会起作用:

使用 Lambda 触发器为另一个充当“启动器”的 Step Function 准备输入。将此输入作为数组启动启动器,并确保包含每个 FIFO 队列消息的接收者句柄。 (注意:您不会从触发器内删除消息。这将使队列消息保持运行状态,并且触发器不会接收消息组中的其他消息。)

运行启动器。迭代输入数组。启动其他步骤功能。

(提示:如果您以每个数组值是每个消息组内的另一个消息数组的方式构建输入数组的内容,那么您可以并行运行处理消息组)。

完成每个步骤功能后,使用随输入一起发送的接收者句柄从队列中删除 FIFO 消息。 (提示:您可能希望捕获步骤函数的错误,以便可以对失败的消息执行任何您想要执行的操作)。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.