跳至內容

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

2 分的閱讀內容
0

我設定了一條 Amazon EventBridge 規則,以將通知傳送到 Amazon Simple Notification Service (Amazon SNS) 主題。但是,我的 Amazon SNS 主題沒有收到事件通知。

解決方法

確認 EventBridge 規則的目標是否與規則位於相同區域

與規則相關的目標必須與規則位於相同 AWS 區域

**注意:**若要尋找 AWS 資源所在的區域,請查看該資源的 Amazon Resource Name (ARN)

查看 EventBridge 規則的「Invocations」和「FailedInvocations」指標,以確定問題

使用 Amazon CloudWatch 主控台檢視 EventBridge 規則的 InvocationsFailedInvocations 指標

如果這兩個指標都有資料點,則 EventBridge 規則通知會嘗試調用目標,但調用失敗。若要解決此問題,您必須授予 EventBridge 向您的主題發佈訊息所需的權限。如需說明,請參閱本文的確認您已授予 EventBridge 所需的權限,以便將訊息發佈到您的主題一節。

如果只有 Invocations 指標的資料點,則 EventBridge 規則通知無法達到目標。若要解決此問題,請重新設定目標規則

確認您已授予 EventBridge 所需的權限,以便將訊息發佈到您的主題

Amazon SNS 主題的資源型政策必須允許 EventBridge 儲存貯體將訊息發佈至該主題。檢查主題的 AWS Identity and Access Management (IAM) 政策,以確認其具有所需的權限。如果政策中沒有這些權限,則新增所需的權限

**重要:**您必須將 events.amazonaws.com 列為 Service 值,並將 sns:Publish 列為 Action 值。

允許 EventBridge 將訊息發佈到 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"
}

驗證執行角色是否允許 EventBridge 發佈到目標

指派給您 EventBridge 規則目標的 IAM 執行角色,需要與 EventBridge 服務建立信任關係。確認您的角色信任政策將 EventBridge (events.amazonaws.com) 作為受信任實體。如果信任政策未包含必要權限,請更新信任政策,以授予 EventBridge 擔任該角色的權限。

允許 EventBridge 擔任目標執行角色的範例 IAM 信任關係陳述式:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "ACCOUNT-ID",
                    "aws:SourceArn": "EVENTBRIDGE-RULE-ARN"
                }
            }
        }
    ]
}

**重要:**將 events.amazonaws.com 列為 Service 值,並將 sts:AssumeRole 列為 Action 值。將 ACCOUNT-ID 替換為您的 AWS 帳戶 ID,並將 EVENTBRIDGE_RULE_ARN 替換為您的 ARN。

(對於已啟用 SSE 的主題) 確認您的主題具有所需的 AWS KMS 權限

您的 Amazon SNS 主題必須使用 AWS Key Management Service (AWS KMS) 客戶自管金鑰。此 AWS KMS key 必須包含自訂金鑰政策,以授予 EventBridge 使用該金鑰的權限。

若要設定所需的 AWS KMS 權限,請完成以下步驟:

  1. 建立一個新的客戶自管金鑰,並包含 EventBridge (events.amazonaws.com) 所需的權限
  2. 使用客戶自管金鑰為您的 Amazon SNS 主題設定伺服器端加密 (SSE)。
  3. 設定 AWS KMS 權限,以允許 EventBridge 將訊息發佈到您的加密主題 (events.amazonaws.com)

允許 EventBridge 將訊息發佈到加密 Amazon SNS 主題的 IAM 政策陳述式範例:

{    "Sid": "Allow CWE to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*"
}
AWS 官方已更新 6 個月前