我希望我的 Amazon Simple Notification Service (Amazon SNS) 主題能接收 Amazon Relational Database Service (Amazon RDS) 通知。
解決方法
檢查您的 SNS 主題是否已加密
1. 開啟 Amazon SNS console (Amazon SNS 主控台)。
2. 在導覽面板上,選擇 Topics (主題),然後選擇您要用來接收 RDS 通知的主題。
3. 選擇 Encryption (加密) 索引標籤。
如果您在 Encryption (加密) 區段中看到 Configured (已設定),則表示您的主題已加密。您也會看到您的 AWS KMS key (KMS key) 和 KMS ARN。
如果您的主題已加密,請授予 Amazon RDS 存取 AWS KMS key 所需的權限。如需更多資訊,請參閱開啟 AWS 服務事件來源與加密主題之間的相容性。
注意: 若要讓加密主題接收 Amazon RDS 通知,您必須使用 AWS KMS key 加密 SNS 主題。您必須修改 AWS KMS key 政策,以新增下列操作的權限:kms:GenerateDataKey* 和 kms:Decrypt。
如果您的主題未加密,請繼續參閱本文的「驗證 SNS 的存取政策」主題一節。
驗證 SNS 主題的存取政策
您的 SNS 存取政策必須具有權限,才能使 Amazon RDS 將事件發佈至您的 SNS 主題。
1. 開啟 Amazon SNS console (Amazon SNS 主控台)。
2. 在導覽面板上,選擇 Topics (主題),然後選擇您要用來接收 RDS 通知的主題。
3. 選擇 Access policy (存取政策) 索引標籤。
如果您的 SNS 存取政策不允許 Amazon RDS 將事件發佈至 SNS 主題,請完成以下步驟以更新政策:
1. 在主題頁面的 Details (詳細資訊) 區段中,選擇 Edit (編輯)。
2. 展開 Access policy (存取政策) 區段,然後將上述政策複製並貼到 JSON 編輯器中。
3. 選擇 Save changes (儲存變更)。
{
"Version": "2012-10-17",
"Id": "SNSAccessPolicy",
"Statement": [
{
"Sid": "PolicyForRDSToSNS",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "your-SNS-topic-ARN",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:rds:your-AWS-region:your-AWS-account-ID:*"
}
}
}
]
}
**注意:**使用您的值更新政策中的預留位置值。
確認您的 RDS 事件通知已針對您預期的事件類型選取正確的類別
為您要接收的通知選擇正確的類別。例如,如果您要接收執行個體重新啟動和關機的通知,請選取 availability (可用性) 類別,並將執行個體設為事件來源。可用性類別涵蓋下列事件:
- 「RDS-EVENT-0006 : The DB instance restarted」
- 「RDS-EVENT-0004 : DB instance shutdown」
- 「RDS-EVENT-0022 : An error has occurred while restarting MySQL or MariaDB」
檢查事件訂閱的組態:
1. 開啟 Amazon Aurora and RDS console (Amazon Aurora 和 RDS 主控台)。
2. 在導覽面板上,選擇 Event subscriptions (事件訂閱),然後選擇您的事件訂閱。
3. 在訂閱頁面的 Event subscription details (事件訂閱詳細資訊) 區段中,記下下列欄位中的值: Source type (來源類型)、Sources (來源) 和 Event categories (事件類別)。
4. 針對符合您使用案例的事件類型,選擇正確的來源和事件類別。
編輯事件訂閱的組態:
**注意:**以下步驟假設您要接收所有執行個體資源和關機事件的通知。如需不同支援事件類型及其類別的詳細資訊,請參閱 Amazon RDS 事件類別和事件訊息。
1. 在 Aurora 和 RDS 主控台的導覽面板上,選擇 Event subscriptions (事件訂閱),然後選擇您的事件訂閱。
2. 在訂閱頁面上,依序選擇 Actions (動作)、Edit (編輯)。
3. 在 Source (來源) 區段中,於 Source Type (來源類型),選取 Instances (執行個體)。
4. 在 Instances to include (要包含的執行個體),選取 All instances (所有執行個體)。
5. 在 Event categories to include (要包含的事件類別),選取 Select specific event categories (選取特定事件類別)。
6. 在 Specific event categories (特定事件類別),選取 availability (可用性)。
7. 選擇 Save (儲存)。
相關資訊
使用 AWS KMS 加密發佈至 Amazon SNS 的訊息