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

上次更新时间:2021 年 6 月 18 日

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

解决方法

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

只有未加密的 SNS 主题才支持 RDS 事件通知。如果指定已加密的 SNS 主题,则 Amazon RDS 无法向您的主题发送事件通知

1.    打开 Amazon SNS 控制台

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

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

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

如果您的主题已加密,请完成从 SNS 主题中禁用加密的步骤。

从 SNS 主题中禁用加密

1.    打开 Amazon SNS 控制台

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

3.    选择编辑

4.    展开 Encryption(加密)部分,然后选择 Disable encryption(禁用加密)。

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

验证 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(保存)。


这篇文章对您有帮助吗?


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