SQS 消息一对一触发相同的 lambda 函数实例

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

我有一个要求,即在单个时间点,同一 SQS 队列中的每个 SQS 消息应触发单独的 lambda 实例

例如,SQS 队列在给定时间有 n 条消息,那么期望是,它应该触发 n 个 lambda 实例

Message_1 --> Lambda_function_A_instance_1
Message_2 --> Lambda_function_A_instance_2
Message_n --> Lambda_function_A_instance_n

使用案例: 需要为每条消息保留单独的 lambda 函数实例,以便处理大于 10G 的数据文件。 因此每条消息都会调用同一函数的新 lamnda 实例

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

要将 Lambda 配置为一次仅从 SQS 读取一条消息,您需要在创建 SQS 事件源映射时将

BatchSize
参数设置为
1
。这将确保一次仅从队列中读取一条消息。

此外,您可以将

VisibilityTimeout
参数设置为大于 Lambda 函数超时值的值,以确保消息不会被多次处理。


0
投票

我们在我正在从事的一个项目中也有同样的要求,我们所做的就是按照 Chaitanya 和 AWS 文档的建议将 BatchSize 参数设置为 1: https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#services-sqs-params

AWS 文档还提供了关于如何使用 SAM 描述它的很好的示例(这是我们在项目中使用的): https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-sqs.html

© www.soinside.com 2019 - 2024. All rights reserved.