跳至內容

為什麼我無法收到來自 Amazon SNS 主題的電子郵件通知?

2 分的閱讀內容
0

我沒有收到來自 Amazon Simple Notification Service (Amazon SNS) 主題的電子郵件通知。

解決方法

確認您的電子郵件端點狀態是否為「已確認」

若要檢查您電子郵件端點的狀態,請使用 Amazon SNS 主控台或 AWS Command Line Interface (AWS CLI)。

Amazon SNS 主控台

請完成下列步驟:

  1. 開啟 Amazon SNS 主控台
  2. 在導覽窗格中,選擇 Topics (主題),然後選取您的主題。
  3. Subscriptions (訂閱) 區段的 Endpoint (端點) 欄中找到您的電子郵件端點。
  4. Status (狀態) 欄中,檢查狀態是否為 Confirmed (已確認)。
  5. 如果狀態不是 Confirmed (已確認),則在 Amazon SNS 主控台上手動確認訂閱。您收到確認電子郵件。
  6. (選用) 如果您沒有收到確認電子郵件,請選擇包含您端點的訂閱,然後選擇 Request confirmation (要求確認)。

AWS CLI

注意: 如果您在執行 AWS CLI 命令時收到錯誤訊息,請參閱 Troubleshooting errors for the AWS CLI (對 AWS CLI 錯誤進行疑難排解)。此外,請務必使用最新版 AWS CLI

執行下列 list-subscriptions-by-topic 命令:

aws sns list-subscriptions-by-topic --topic-arn "arn:aws:sns:us-east-1:125224123456:my-topic

注意: 請將 arn:aws:sns:us-east-1: 125224123456:your-topic 替換為您的 Amazon SNS 主題 Amazon Resource Name (ARN)。

輸出範例:

{
    "Subscriptions": [
        {
            "Owner": "123456789012",
            "Endpoint": "my-email@example.com",
            "Protocol": "email",
            "TopicArn": "arn:aws:sns:us-west-2:123456789012:your-topic",
            "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f"
        }
    ]
}

注意: 如果 Endpoint (端點) 欄中沒有電子郵件端點,則系統會刪除該端點。

檢查電子郵件地址是否可以接收來自外部聯絡人的電子郵件

若要檢查問題是否僅出在 Amazon SNS 上,請從外部提供者向您的目標電子郵件地址傳送測試電子郵件。測試電子郵件可協助您確定允許來自外部來源的流量類型。組織可能會將其信箱限制為僅接收內部流量。

如果信箱收到測試電子郵件,請完成下一區段中的步驟。

檢查防火牆、垃圾郵件篩選器和信箱規則

請聯絡您的電子郵件管理員,檢查防火牆或垃圾郵件篩選器是否封鎖了 no-reply@sns.amazonaws.com 地址。最佳實務是將 no-reply@sns.amazonaws.com 地址新增至您的郵件信箱允許清單。如需更多資訊,請參閱 Amazon SNS 常見問答集 Transports (傳輸) 一節中的 Do subscribers need to specifically configure their email settings to receive notifications from Amazon SNS? (訂閱用戶是否需要特別設定其電子郵件設定以接收來自 Amazon SNS 的通知?)。

檢查信箱規則中是否存在封鎖您 SNS 主題電子郵件的明確 Deny (拒絕) 動作。另外,請檢查電子郵件是否路由至信箱中的特定資料夾。

設定取消訂閱所需的驗證

設定需要驗證才能取消訂閱的電子郵件訂閱,以免使用者取消您 SNS 主題電子郵件的所有收件人訂閱。

檢查訂閱篩選政策

請完成下列步驟:

  1. 開啟 Amazon SNS 主控台
  2. 在導覽窗格中,選擇 Topics (主題)。
  3. 選擇您的主題,然後選取 Subscriptions (訂閱) 索引標籤。
  4. 選取 Subscription filter policy (訂閱篩選政策) 索引標籤,然後檢查是否有篩選政策
  5. 如果套用了篩選器,請檢查 NumberOfNotificationsFilteredOut 指標,以確認該指標是否拒絕了任何訊息。

當訊息傳送到端點時,Amazon SNS 會將訊息屬性與篩選政策中的屬性進行比較。如果訊息屬性和篩選政策屬性不相符,則電子郵件端點不會收到該訊息。

如需更多資訊,請參閱如何對 Amazon SNS 中的訂閱篩選條件政策問題進行疑難排解?

檢查電子郵件抑制狀態

若要檢視您的帳戶層級抑制清單上的電子郵件位址清單,請執行下列 list-suppressed-destinations 命令:

aws sesv2 list-suppressed-destinations

若要移除抑制清單上的電子郵件位址,請參閱如何移除 Amazon SES 禁止清單上的電子郵件地址?

確認未使用預設 AWS KMS key 設定

如果您使用預設的 AWS Key Management Service (KMS) 金鑰進行加密,則 AWS 服務無法將訊息發佈到 SNS 主題。Amazon SNS 的 AWS KMS key 政策不允許 AWS 服務執行 kms:Decryptkms:GenerateDataKey API 呼叫。由於 AWS 管理金鑰,因此您無法手動編輯政策。

若要檢查 AWS KMS key 設定,請完成下列步驟:

  1. 開啟 Amazon SNS 主控台
  2. 在導覽窗格中,選擇 Topics (主題)。
  3. 選擇您的主題,然後選取 Encryption (加密) 索引標籤。
  4. 如果 AWS KMS key 設定為 (Default) alias/aws/sns ((預設) alias/aws/sns),則設定客戶管理金鑰政策,內容大致如下:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "service.amazonaws.com"
                },
                "Action": [
                    "kms:GenerateDataKey*",
                    "kms:Decrypt"
                ],
                "Resource": "*"
            }
        ]
    }

上述客戶管理金鑰政策包含執行 kms:GenerateDataKey and kms:Decrypt. 的許可。