

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置 Amazon SQS 队列以触发函数 AWS Lambda
<a name="sqs-configure-lambda-function-trigger"></a>

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

**配置可见性超时**   
将队列可见性超时设置为[函数超时](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-common-summary)的至少六倍。这可以确保在函数处理前一批任务期间被节流时，Lambda 有足够的时间进行重试。

**使用死信队列（DLQ）**  
指定一个死信队列，用于捕获 Lambda 函数无法处理的消息。

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

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

**限制**  
队列和 Lambda 函数必须位于同一 AWS 区域。  
使用默认密钥（Amazon SQS 的AWS 托管 KMS 密钥）的[加密队列](sqs-server-side-encryption.md)无法在其他队列中调用 Lambda 函数。 AWS 账户

有关实施详细信息，请参阅《AWS Lambda 开发人员指南》**中的[将 AWS Lambda 与 Amazon SQS 结合使用](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)。

## 先决条件
<a name="configure-lambda-function-trigger-prerequisites"></a>

要配置 Lambda 函数触发器，您必须满足以下要求：
+ 如果您使用用户，则您的 Amazon SQS 角色必须包括以下权限：
  + `lambda:CreateEventSourceMapping`
  + `lambda:ListEventSourceMappings`
  + `lambda:ListFunctions`
+ Lambda 执行角色必须包括以下权限：
  + `sqs:DeleteMessage`
  + `sqs:GetQueueAttributes`
  + `sqs:ReceiveMessage`
+ 如果您将加密队列与 Lambda 函数相关联，请将 `kms:Decrypt` 权限添加到 Lambda 执行角色中。

有关更多信息，请参阅 [管理 Amazon SQS 中的访问权限概述](sqs-overview-of-managing-access.md)。

**配置队列以触发 Lambda 函数（控制台）**

1. 打开 Amazon SQS 控制台，网址为。[https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. 在导航窗格中，选择**队列**。

1. 在**队列**页面上，选择要配置的队列。

1. 在队列页面上，选择 **Lambda 触发器**选项卡。

1. 在 **Lambda 触发器**页面上，选择 Lambda 触发器。

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

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

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

1. 要验证配置的结果，请[向您的队列发送消息](creating-sqs-standard-queues.md#sqs-send-messages)，然后在 Lambda 控制台中查看触发的 Lambda 函数。