首页 > 解决方案 > 手动触发 Lambda 以读取 SQS

问题描述

是否可以创建一个手动触发以从 SQS 读取的 lambda。

我有一个不断接收消息的 SQS 队列,我想在需要时处理它们(不是连续同步处理)。

我可以有类似启动/停止 lambda 的东西,我在其中启动 lambda,它从 SQS 主动消耗,当我停止时它停止消耗

标签: amazon-web-servicesaws-lambdatriggersamazon-sqs

解决方案


通常,AWS Lambda 函数配置为从 Amazon SQS 队列“触发”。每当消息到达时,都会触发 Lambda 函数。

但是,您可以编写一个 AWS Lambda 函数来调用ReceiveMessages()队列本身,而不是配置触发器。然后,Lambda 函数将负责DeleteMessage()在处理完消息后进行调用。

您可以随时使用该Invoke()命令调用 Lambda 函数。

您需要做出的唯一决定是 Lambda 函数是否应该处理:

  • 每次调用一条消息,
  • 每次调用一批消息(最多 10 条),
  • 运行一个循环,不断从队列中检索消息,直到队列为空或 Lambda 函数超时(这可能会使消息部分处理,所以这不是一个好主意)

推荐阅读