為什麼我的 Lambda Amazon SQS 觸發程式被禁用?

1 分的閱讀內容
0

我將 AWS Lambda 函數設定為處理 Amazon Simple Queue Service (Amazon SQS) 佇列中的訊息,但 SQS 觸發程式未處於作用中狀態。

簡短描述

您可以使用 Lambda 函數來處理 Amazon SQS 佇列中的訊息事件來源映射會從事件來源讀取並調用 Lambda 函數。事件來源映射的狀態為正在建立正在啟用已啟用]正在停用已停用正在更新已刪除

Lambda 民意調查者會持續對 Amazon SQS 佇列進行 ReceiveMessage API 動作呼叫。如果 ReceiveMessage API 呼叫未完成,則會停用 EventSourceMapping 資源。

分辨率

Lambda 函數權限

請確定您的 Lambda 函數執行角色具有下列權限的存取權限:

AWS Key Management Service (AWS KMS) 權限

如果 Amazon SQS 佇列已設定使用 SSE-KMS 加密,請確定:

**注意:**使用 SSE-KMS 加密的 Amazon SQS 佇列無法在不同的 AWS 帳戶 (跨帳戶) 中調用 Lambda 函數。

CloudTrail 活動歷史記錄

您可以使用 AWS CloudTrail 查詢事件。根據預設,您的 AWS 帳戶處於開啟狀態。

如需 AWS 帳戶中持續的事件記錄,請建立追蹤。使用追蹤功能,CloudTrail 會針對您的帳戶進行的 API 呼叫建立日誌。這些日誌會傳送到您指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如果您未設定追蹤,仍然可以在 CloudTrail 主控台的事件歷史記錄中檢視最近的事件。

1.    開啟CloudTrail 主控台

2.    在導覽窗格中,選取「 事件歷史記錄」。

3.    針對您的使用案例,遵循指示檢視、顯示和篩選 CloudTrail 事件

您也可以下載記錄的事件歷史記錄,並且儲存為 CSV 或- JSON 格式的檔案

檢查 CloudTrail 事件名稱 LambdaESMDisabled。事件日誌包含 ESMDisableReason 參數,以及 Amazon SQS 觸發程式未處於作用中狀態的原因的詳細資訊。

如需更多資訊,請參閱使用 CloudTrail 記錄 Lambda API 呼叫

Amazon CloudWatch 警示 (選用)

您可以為 Amazon SQS 指標建立 CloudWatch 警示,以接收、已傳送、刪除等訊息數量的通知。例如,您可以使用 Amazon SQS 指標 NumberOfMessagesReceived 來取得傳回的最近訊息數量。如果計數為 0,則調用新的 Lambda 函數以檢查 Amazon SQS 觸發程式的狀態。如果 Amazon SQS 觸發程式仍處於停用狀態,請使用新的 Lambda 函數將其啟用。

如需更多資訊,請參閱適用於 Amazon SQS 的可用 CloudWatch 指標

相關資訊

我需要什麼權限才能存取 Amazon SQS 佇列?

如何疑難排解 Lambda 函數故障?

AWS 官方
AWS 官方已更新 1 年前