

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 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. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 在**佇列**頁面上，選擇要設定的佇列。

1. 在佇列頁面上，選擇 **Lambda 觸發器**索引標籤。

1. 在 **Lambda 觸發程序**頁面上，選擇 Lambda 觸發程序。

   如果清單不包含您需要的 Lambda 觸發程序，請選擇**設定 Lambda 函數觸發程序**。輸入 Lambda 函數的 Amazon Resource Name (ARN)，或選擇現有的資源。然後選擇 **Save** (儲存)。

1. 選擇**儲存**。主控台會儲存設定並顯示佇列的**詳細資訊**頁面。

   在**詳細資訊**頁面上，**Lambda 觸發程序**索引標籤會顯示 Lambda 函數及其狀態。Lambda 函數大約需要 1 分鐘的時間才能與您的佇列產生關聯。

1. 若要驗證組態的結果，您可以[傳送訊息至佇列](creating-sqs-standard-queues.md#sqs-send-messages)，然後在 Lambda 主控台檢視觸發的 Lambda 函數。