配置 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 函数(控制台)
通过以下网址打开 Amazon SQS 控制台:https://console.aws.amazon.com/sqs/
。 -
在导航窗格中,选择 Queues (队列)。
-
在队列页面上,选择要配置的队列。
-
在队列页面上,选择 Lambda 触发器选项卡。
-
在 Lambda 触发器页面上,选择 Lambda 触发器。
如果列表中没有您需要的 Lambda 触发器,请选择配置 Lambda 函数触发器。输入 Lambda 函数的 Amazon 资源名称 (ARN),或选择现有资源。然后选择保存。
-
选择保存。控制台会保存配置,并显示队列的详细信息页面。
在详细信息页面上,Lambda 触发器选项卡显示 Lambda 函数及其状态。Lambda 函数大约需要 1 分钟时间与队列关联。
-
要验证配置的结果,请向您的队列发送消息,然后在 Lambda 控制台中查看触发的 Lambda 函数。