我怎样才能让 Amazon SNS 主题接收 Amazon RDS 通知?

上次更新日期:2022 年 10 月 7 日

我希望我的 Amazon Simple Notification Service (Amazon SNS) 主题能够接收 Amazon Relational Database Service (Amazon RDS) 通知。

解决方法

检查您的 SNS 主题是否已加密

1.    打开 Amazon SNS 控制台

2.    在导航面板上,选择 Topics(主题),然后选择要接收 RDS 通知的主题。

3.    选择 Encryption(加密)选项卡。

如果您在 Encryption(加密)部分看到 Configured(已配置)字样,则表示您的主题已加密。您还可以看到 AWS KMS 密钥(KMS 密钥)KMS ARN

如果您的主题已加密,请授予 Amazon RDS 访问 AWS KMS 密钥所需的权限。有关更多信息,请参阅开启来自 AWS 服务的事件源和加密主题之间的兼容性

注意:要使加密主题接收 Amazon RDS 通知,您必须使用 AWS KMS 密钥对 SNS 主题进行加密。您必须修改 AWS KMS 密钥策略才能添加操作权限:kms:GenerateDataKey*kms:Decrypt

如果您的主题未加密,请继续阅读本文的 “验证 SNS 的访问策略” 主题部分。

验证 SNS 主题的访问策略

您的 SNS 访问策略必须有权限允许 Amazon RDS 向您的 SNS 主题发布事件。

1.    打开 Amazon SNS 控制台

2.    在导航面板上,选择 Topics(主题),然后选择要接收 RDS 通知的主题。

3.    选择 Access policy(访问策略)选项卡。

如果 SNS 访问策略不允许 Amazon RDS 向您的 SNS 主题发布事件,请完成以下步骤来更新策略:

1.    在主题页面的 Details(详细信息)部分,选择 Edit(编辑)。

2.    展开 Access policy(访问策略)部分,然后复制之前的策略并粘贴到 JSON 编辑器。

3.    选择 Save changes(保存更改)。

{
  "Version": "2008-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(可用性)类别和作为事件来源的实例。Availability(可用性)类别包括以下事件:

  • “RDS-EVENT-0006:数据库实例已重启”
  • “RDS-EVENT-0004:数据库实例已关闭”
  • “RDS-EVENT-0022:重启 MySQL 或 MariaDB 时发生错误”

检查事件订阅的配置:

1.    打开 Amazon RDS 控制台

2.    在导航面板上,选择 Event subscriptions(事件订阅),然后选择您的事件订阅。

3.    在 Event subscription details(事件订阅详细信息)部分,记下以下字段的值:Source type(来源类型)、Sources(来源)和 Event categories(事件类别)。

4.    为适合您的使用案例的事件类型选择正确的来源和事件类别。

编辑事件订阅的配置:

注意:以下步骤假设您希望接收与所有实例资源和关闭相关的通知。有关受支持的不同类型的事件及其类别的更多信息,请参阅 Amazon RDS 事件类别和事件消息

1.    在 Amazon 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(保存)。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?