配置 Amazon SQS 队列以触发 Amazon Lambda 函数 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 Amazon SQS 队列以触发 Amazon Lambda 函数

您可以使用 Lambda 函数处理来自 Amazon SQS 队列的消息。Lambda 会轮询队列并同步调用您的函数,将一批消息作为事件传递。

配置可见性超时

将队列可见性超时设置为函数超时的至少六倍。这可以确保在函数处理前一批任务期间被节流时,Lambda 有足够的时间进行重试。

使用死信队列(DLQ)

指定一个死信队列,用于捕获 Lambda 函数无法处理的消息。

处理多个队列和函数

Lambda 函数可通过为每个队列创建独立的事件源来处理多个队列。您还可以将多个 Lambda 函数关联到同一队列。

加密队列的权限

如果您将加密队列与 Lambda 函数相关联,但 Lambda 不轮询消息,请将 kms:Decrypt 权限添加到您的 Lambda 执行角色中。

限制

队列和 Lambda 函数必须位于同一 Amazon Web Services 区域。

有关实施详细信息,请参阅《Amazon Lambda 开发人员指南》中的将 Amazon Lambda 与 Amazon SQS 结合使用

先决条件

要配置 Lambda 函数触发器,您必须满足以下要求:

  • 如果您使用用户,则您的 Amazon SQS 角色必须包括以下权限:

    • lambda:CreateEventSourceMapping

    • lambda:ListEventSourceMappings

    • lambda:ListFunctions

  • Lambda 执行角色必须包括以下权限:

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • sqs:ReceiveMessage

  • 如果您将加密队列与 Lambda 函数相关联,请将 kms:Decrypt 权限添加到 Lambda 执行角色中。

有关更多信息,请参阅 管理 Amazon SQS 中的访问权限概述

配置队列以触发 Lambda 函数(控制台)
  1. 通过以下网址打开 Amazon SQS 控制台:https://console.aws.amazon.com/sqs/

  2. 在导航窗格中,选择 Queues (队列)。

  3. 队列页面上,选择要配置的队列。

  4. 在队列页面上,选择 Lambda 触发器选项卡。

  5. Lambda 触发器页面上,选择 Lambda 触发器。

    如果列表中没有您需要的 Lambda 触发器,请选择配置 Lambda 函数触发器。输入 Lambda 函数的 Amazon 资源名称 (ARN),或选择现有资源。然后选择保存

  6. 选择保存。控制台会保存配置,并显示队列的详细信息页面。

    详细信息页面上,Lambda 触发器选项卡显示 Lambda 函数及其状态。Lambda 函数大约需要 1 分钟时间与队列关联。

  7. 要验证配置的结果,请向您的队列发送消息,然后在 Lambda 控制台中查看触发的 Lambda 函数。