跳至內容

如何使用無效字母佇列來對 EventBridge 規則的 FailedInvocations 指標問題進行疑難排解?

2 分的閱讀內容
0

我想要將無效字母佇列 (DLQ) 與 Amazon EventBridge 規則的目標建立關聯,以對 FailedInvocations 指標的問題進行疑難排解。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

建立標準 Amazon SQS 佇列

使用 Amazon Simple Queue Service (Amazon SQS) 主控台建立 SQS 佇列。

請完成下列步驟:

  1. 開啟 Amazon SQS console (Amazon SQS 主控台)。
  2. 選擇 Create queue (建立佇列)。
  3. Type (類型) 中,選擇 Standard (標準) 佇列類型。
  4. 輸入佇列的名稱,例如 myEventBridgeDLQ
  5. 選擇 Create queue (建立佇列)。

將 SQS 佇列與 EventBridge 規則的目標建立關聯

請完成下列步驟:

  1. 開啟 EventBridge console (EventBridge 主控台)。
  2. 在導覽窗格中,選擇 Rules (規則)。
  3. 選取調用目標失敗的 EventBridge 規則,然後選擇 Edit (編輯)。
  4. 在導覽窗格中,選擇 Select target(s) (選取目標),然後選擇 Additional settings (其他設定)。
  5. Dead-letter queue (無效字母佇列) 中,選擇 Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue (在目前 AWS 帳戶中選取 Amazon SQS 佇列作為無效字母佇列)。然後,在 Select an SQS queue (選取 SQS 佇列) 下拉式清單中選取您的 SQS 佇列。
  6. 選擇 Skip to Review and update (跳至檢閱並更新)。
  7. 選擇 Update rule (更新規則)。

EventBridge 必須具有將調用失敗的事件傳送到 SQS 佇列的權限。如果您使用 EventBridge 主控台將 DLQ 與 EventBridge 規則的目標建立關聯,則 EventBridge 會自動新增該權限。如果您使用 AWS CLI、AWS SDK 或 AWS CloudFormation,則必須手動建立授予所需權限的資源型政策。您可以執行 set-queue-attributes 命令來修改政策。

**重要:**如果您加密了 SQS 佇列,則必須建立客戶自管金鑰。您也必須在 AWS Key Management Service (AWS KMS) 金鑰政策中新增下列權限:

{      "Sid": "Allow EventBridge to use the key",  
    "Effect": "Allow",  
    "Principal": {  
        "Service": "events.amazonaws.com"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
    ],  
    "Resource": "*"  
}

如需詳細資訊,請參閱設定 AWS KMS 權限

將符合您 EventBridge 規則的事件傳送到 EventBridge 事件匯流排

若要將事件傳送至符合事件規則的預設事件匯流排,請變更 AWS 服務事件的 AWS 環境。如果 EventBridge 規則無法調用目標,則 EventBridge 會將所有失敗事件傳送到 DLQ。

若要將符合事件規則的事件傳送到自訂事件匯流排,請使用 PutEvents API 或 put-events 命令。

若要檢查 EventBridge 規則的 FailedInvocations 指標,請完成下列步驟:

  1. 開啟 EventBridge console (EventBridge 主控台)。
  2. 選取您的 EventBridge 規則,然後選擇 Monitoring (監控) 索引標籤。
  3. 尋找 MatchedEventsTriggeredRules 以確認規則與事件相符。
  4. 檢查 InvocationsFailedInvocations 以確認該規則已嘗試調用目標。

**注意:**如果指標沒有資料點,請確認您正確設定了規則模式。

擷取 EventBridge 傳送至 DLQ 的失敗事件

請完成下列步驟:

  1. 開啟 EventBridge console (EventBridge 主控台)。
  2. 在導覽窗格中,選擇 Rules (規則)。
  3. 選取調用失敗的 EventBridge 規則。
  4. 選擇 Targets (目標) 索引標籤,然後選取 DLQ。
  5. 選擇 Send and receive messages (傳送和接收訊息),以開啟 SQS 主控台上的 Send and receive messages (傳送和接收訊息) 頁面。
  6. 選擇 Poll for messages (輪詢訊息)。
    **注意:**Messages (訊息) 區段會顯示已收到訊息的清單。此清單會顯示每個訊息的訊息 ID、傳送日期、大小和接收數量。
  7. 選取其中一則訊息。然後,選擇View details (查看詳細資訊),以查看 EventBridge 無法傳送到目標的事件。
  8. 選擇 Attributes (屬性) 索引標籤,以查看 ERROR_CODEERROR_MESSAGERULE_ARNTARGET_ARN 屬性。
    **注意:**ERROR_CODEERROR_MESSAGE 屬性提供了事件傳送失敗的原因。

相關資訊

如何對 Amazon EventBridge 規則的問題進行疑難排解?

Amazon SQS 權限

AWS 官方已更新 1 年前