選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

建立和設定 Amazon SQS 事件來源映射

焦點模式
建立和設定 Amazon SQS 事件來源映射 - AWS Lambda

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

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

若要使用 Lambda 處理 Amazon SQS 訊息,請正確設定佇列,然後建立 Lambda 事件來源映射。

配置要搭配 Lambda 使用的佇列

如果您還沒有建立 Amazon SQS 佇列,請建立一個來做為 Lambda 函數的事件來源。Lambda 函數和 Amazon SQS 佇列必須位於相同的 中 AWS 區域,雖然它們可以位於不同的 AWS 帳戶 中。

為讓您的函數有時間處理每個記錄批次,請將來源佇列的可見性逾時設定為函數設定之逾時的至少六倍。萬一您的函數在處理前一個批次時遭到調節,額外的時間可允許 Lambda 重試。

根據預設,只要 Lambda 在處理批次的過程中遇到錯誤,則該批次中的所有訊息都會傳回佇列。在可見性逾時時間到了之後,這些訊息會再次對 Lambda 可見。您可以將事件來源映射設定為使用部分批次回應,從而僅將失敗的訊息傳回佇列。此外,如果函數多次處理訊息失敗,Amazon SQS 可將訊息傳送到無效字母佇列。我們建議將來源佇列的再驅動政策maxReceiveCount 設定為 5 或更大。這讓 Lambda 在將失敗的訊息傳送到無效字母佇列之前,有機會重試幾次。

設定 Lambda 執行角色許可

AWSLambdaSQSQueueExecutionRole AWS 受管政策包含 Lambda 從 Amazon SQS 佇列讀取所需的許可。您可以將此受管政策新增至函數的執行角色

或者,如果您使用的是加密佇列,也需要將下列許可新增至您的執行角色:

建立 SQS 事件來源映射

建立事件來源映射,指示 Lambda 從您的佇列傳送項目至 Lambda 函數。您可以建立多個事件來源映射,使用單一函數處理來自多個佇列的項目。當 Lambda 調用目標函數時,事件可能包含多個項目,最多為可設定的最大批次大小

若要將函數設定為從 Amazon SQS 讀取,請將 AWSLambdaSQSQueueExecutionRole AWS 受管政策連接至您的執行角色。然後,透過以下步驟從主控台建立 SQS 事件來源映射。

若要新增許可並建立觸發條件
  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇函數的名稱。

  3. 依序選擇 Configuration (組態) 索引標籤和 Permissions (許可)。

  4. 角色名稱下面,選擇執行角色連結。此連結會在 IAM 主控台中開啟該角色。

    執行角色連結
  5. 選擇新增許可,然後選擇連接政策

    在 IAM 主控台中附接政策
  6. 在搜尋欄位中輸入 AWSLambdaSQSQueueExecutionRole。將此政策新增至您的執行角色。這是受 AWS 管政策,其中包含您的函數從 Amazon SQS 佇列讀取所需的許可。如需此政策的詳細資訊,請參閱《AWS 受管政策參考》中的 AWSLambdaSQSQueueExecutionRole 一節。

  7. 在 Lambda 主控台中返回您的 Lambda 函數。在函數概觀下,選擇新增觸發條件

    Lambda 主控台的函數概觀區段
  8. 選擇觸發條件類型。

  9. 設定需要的選項,然後選擇新增

Lambda 支援 Amazon SQS 事件來源的下列組態選項:

SQS 佇列

要從中讀取記錄的 Amazon SQS 佇列。Lambda 函數和 Amazon SQS 佇列必須位於相同的 中 AWS 區域,雖然它們可以位於不同的 AWS 帳戶 中。

啟用觸發條件

事件來源映射的狀態。系統會預設選取啟用觸發條件

批次大小

每個批次中要傳送至函數的記錄數量上限。若是標準佇列,這最高可達 10,000 個記錄。若是 FIFO 佇列,最大值為 10。批次大小若超過 10,您還必須將批次間隔 (MaximumBatchingWindowInSeconds) 設定為至少 1 秒。

設定函數逾時以允許足夠時間來處理整個項目批次。如果項目需要長時間處理,請選擇較小的批次大小。大型批次大小可提升效率,適用非常快速或開銷龐大的工作負載。如果您在函數上設定保留並行,應最少設定五個並行執行,藉此降低 Lambda 調用函數時的調節錯誤機率。

Lambda 會將批次中所有記錄以單一呼叫傳送至函數,前提是事件的總大小不超過同步調用的調用承載大小配額 (6 MB)。Lambda 和 Amazon SQS 兩者均會產生每筆記錄的中繼資料。這個額外的中繼資料會計入總酬載大小,並且可能會導致批次中傳送的記錄總數低於您設定的批次大小。Amazon SQS 傳送的中繼資料欄位長度可能有所不同。如需 Amazon SQS 中繼資料欄位的詳細資訊,請參閱 Amazon Simple Queue Service API 參考中的 ReceiveMessage API 操作文件。

批次視窗

調用函式前收集記錄的最長時間 (單位為秒)。這僅適用於標準佇列。

如果您使用的批次間隔大於 0 秒,則必須考慮佇列可見性逾時中增加的處理時間。我們建議將您的佇列可見性逾時設定為函數逾時的六倍,再加上 MaximumBatchingWindowInSeconds 的值。這可讓您的 Lambda 函數有時間處理每個事件批次,並在發生節流錯誤時重試。

當訊息可供使用,Lambda 會開始批次處理訊息。Lambda 會開始一次處理五個批次,而函數有五個並行調用。如果訊息仍可用,則 Lambda 每分鐘會再為函數增加最多 300 個執行個體,上限是 1,000 個函數執行個體。若要深入了解函數擴展與並行,請參閱 Lambda 函數擴展

若要處理更多訊息,您可以最佳化 Lambda 函數以達到更高的輸送量。如需詳細資訊,請參閱了解 Amazon SQS 標準佇列的 AWS Lambda 擴展方式。

最大並行數量

事件來源可以調用的並行函數上限。如需詳細資訊,請參閱設定 Amazon SQS 事件來源的並行上限

篩選條件

新增篩選條件來控制 Lambda 要傳送哪些事件給函數進行處理。如需詳細資訊,請參閱控制 Lambda 將哪些事件傳送至您的函數

下一個主題:

擴展行為

上一個主題:

SQS
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。