為什麼我的 Amazon SNS 主題沒有收到 CloudWatch Events 通知?

上次更新日期:2021 年 9 月 10 日

我設定 Amazon CloudWatch Events 規則,以傳送通知到 Amazon Simple Notification Service (Amazon SNS) 主題。為什麼我的 Amazon SNS 主題接收不到這些事件通知?

解決方案

確認 CloudWatch Events 規則的目標位於與規則相同的 AWS 區域

您與規則建立關聯的目標必須與規則位於相同的區域中。如需詳細資訊,請參閱 Amazon CloudWatch Events 入門

注意:若要查看 AWS 資源所在的區域,請檢閱資源的 Amazon 資源名稱 (ARN)

檢閱 CloudWatch Events 規則的 "Invocations" 和 "FailedInvocations" 指標,以確認問題的原因

CloudWatch 主控台中,檢閱 CloudWatch Event 規則的 InvocationsFailedInvocations 指標

如果這兩個指標都有資料點,CloudWatch Events 規則通知會嘗試叫用目標,可是叫用失敗。若要解決此問題,您必須授與 CloudWatch 必要的許可,才能將訊息發佈至您的主題。如需指示,請參閱本文的確認您已授與 CloudWatch 將訊息發佈至主題的必要許可一節。

如果只有 Invocations 指標的資料點,則 CloudWatch Events 規則通知並未到達目標。如果要解決這個問題,請修正目標上的設定錯誤

如需詳細資訊,請參閱《CloudWatch 使用者指南》中的檢視可用指標

確認您已授與 CloudWatch 將訊息發佈至主題的必要許可

您 Amazon SNS 主題的基於資源的政策必須允許 CloudWatch 將訊息發佈至主題。檢閱您主題的 AWS Identity and Access Management (IAM) 政策,確認其具有必要的許可,並視需要新增。

重要:"events.amazonaws.com" 必須列為 "Service" 值,"sns:Publish" 必須列為 "Action" 值。

若要新增所需的許可,請遵循我的規則雖能執行,但未見到任何訊息發佈至 Amazon SNS 主題中的指示。

允許 CloudWatch 發佈訊息至 Amazon SNS 主題的 IAM 許可聲明範例

{
    "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:us-east-1:123456789012:My_SNS_Topic"
}

(適用於已啟用伺服器端加密 (SSE) 的主題) 確認您的主題有所需的 AWS Key Management (AWS KMS) 許可

您的 Amazon SNS 主題必須使用屬於客戶受管的 AWS KMS 金鑰。此 KMS 金鑰必須包含自訂金鑰政策,以提供 CloudWatch 足夠的金鑰使用許可。

若要設定必要的 AWS KMS 許可,請執行下列動作:

1.    建立屬於客戶受管的新 KMS 金鑰,並包含 CloudWatch 的所需許可

2.    使用您剛才建立的自訂 KMS 金鑰,為您的 Amazon SNS 主題設定 SSE

3.    設定 AWS KMS 許可,允許 CloudWatch 將訊息發佈至您的加密主題

允許 CloudWatch 將訊息發佈至加密 Amazon SNS 主題的 IAM 政策聲明範例

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

此文章是否有幫助?


您是否需要帳單或技術支援?