本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 Amazon SQS 队列以触发 Amazon Lambda 函数
您可以使用 Amazon Lambda 函数处理 Amazon SQS 队列中的消息。Lambda 轮询队列并同步调用您的 Lambda 函数,其中有包含队列消息的事件。为使您的函数有时间处理每批记录,请将源队列的可见性超时至少设置为您在函数上配置的超时的六倍。这一额外的时间有利于 Lambda 在您的函数处理之前的批处理期间遇到限流时进行重试。
您可以指定另一个队列作为您的 Lambda 函数无法处理的消息的死信队列。
一个 Lambda 函数可以处理来自多个队列的项(为每个队列使用一个 Lambda 事件源)。您可以使用具有多个 Lambda 函数的同一队列。
如果您将加密队列与 Lambda 函数相关联,但 Lambda 不轮询消息,请将 kms:Decrypt
权限添加到您的 Lambda 执行角色中。
注意以下限制:
-
您的队列和 Lambda 函数必须位于同一 Amazon 区域。
有关实施 Lambda 函数的信息,请参阅《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 函数。