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

2 分的閱讀內容
0

我已建立 Amazon Simple Storage Service (Amazon S3) 事件通知,以透過我的 Amazon Simple Notification Service (Amazon SNS) 主題傳送訊息。但是,當我的 Amazon S3 儲存貯體發生新事件時,我的 Amazon SNS 主題不會發佈訊息。

解決方法

確認您的 Amazon S3 事件類型已正確設定

設定 Amazon S3 事件通知時,您必須指定哪些受支援的 Amazon S3 事件類型會導致 Amazon S3 傳送通知。如果您未指定的事件類型出現在 Amazon S3 儲存貯體中,則 Amazon S3 不會傳送通知。

確認您的物件金鑰名稱篩選條件採用網址編碼 (百分比編碼) 格式

如果您的事件通知設定為使用物件金鑰名稱篩選,則只會針對具有特定首碼或尾碼的物件發佈通知。

如果您在首碼或尾碼中使用任何特殊字元,則必須以網址編碼 (百分比編碼) 格式輸入這些字元。如需詳細資訊,請參閱物件金鑰命名準則使用物件中繼資料

**注意:**萬用字元 ("*") 不能用在篩選條件中作為首碼或尾碼來表示任何字元。

確認您授與 AWS S3 所需的權限,以便將訊息發佈到您的主題

您的 Amazon SNS 主題以資源為基礎的政策必須允許 Amazon S3 儲存貯體將訊息發佈至該主題。

檢查主題的 AWS Identity and Access Management (IAM) 政策,以確認其具有所需權限,並視需要新增權限。如需詳細資訊,請參閱授與將訊息發佈至 SNS 主題或 SQS 佇列的權限

(適用於已啟用伺服器端加密 (SSE) 的主題) 請確認您的主題具有必要的 AWS Key Management Service (AWS KMS) 權限

您的 Amazon SNS 主題必須使用由客戶管理的 AWS KMS key。此 KMS key 必須包含提供 Amazon S3 充分金鑰使用權限的自訂金鑰政策

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

1.    建立由客戶管理的新 KMS 金鑰並加入 Amazon S3 所需的權限

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

3.    設定 AWS KMS 權限,以讓 Amazon S3 將訊息發佈至您加密的主題

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

{
"version": "2012-10-17",
"statement": [{
    "effect": "allow",
    "principal": {"service": "s3.amazonaws.com"},
    "action": ["kms:generatedatakey*", "kms:decrypt"],
    "resource": "*"
}]
}

如果在 SNS 主題上仍未收到 Amazon S3 事件通知,請查看 Amazon SNS CloudWatch 指標 NumberOfMessagePublished。此指標顯示 Amazon S3 是否正在發佈事件。如果指標未填入,則表示 Amazon S3 至 Amazon SNS 組態存在問題。

如果已填入 NumberOfMessagePublished 指標,則查看 NumberOfNotificationsDeliveredNumberOfNotificationsFailed 指標。這些指標顯示訊息是否從 Amazon SNS 主題順利地傳遞至訂閱端點。

Amazon SNS 提供支援,以記錄傳送至具有 Amazon SNS 端點之主題的通知訊息傳送狀態。這包括 HTTP、Amazon Kinesis Data Firehose、AWS Lambda、Platform 應用程式端點、Amazon Simple Queue ServiceAWS SMS。開啟 Amazon SNS 主題傳送狀態記錄以進一步疑難排解問題。


相關資訊

允許 Amazon S3 事件通知發佈至主題

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