我如何在 Route 53 托管区记录被更改时收到通知?

2 分钟阅读
0

如何在创建资源记录集或从 Amazon Route 53 中删除资源记录集时收到包含自定义通知的电子邮件响应?

简短描述

您可以结合使用自定义事件模式与 Amazon EventBridge 或 Amazon CloudWatch Events 规则,该规则在 ChangeResourceRecordSets API 活动被记录到 AWS CloudTrail 时触发。然后,将响应路由到某个 Amazon Simple Notification Service(Amazon SNS)主题。

解决方法

如果您尚未通过电子邮件订阅创建 Amazon SNS 主题,请按照 Amazon SNS 入门中的说明创建一个。稍后将使用此主题和订阅。本文将任务分为三个部分:

  • 创建 EventBridge 规则以匹配 CloudTrail 捕获的 Route 53 API 调用
  • 将 EventBridge 规则与电子邮件通知的 SNS 目标关联
  • 在目标上配置输入转换器,以便可以将通知自定义为人类可读的消息

要在 Route 53 托管区记录发生更改时收到通知,请按照每个任务的所有步骤进行操作。

创建 EventBridge 规则

Route 53 是一项 AWS 全球服务,仅在美国东部(弗吉尼亚州北部)提供。必须在美国东部(弗吉尼亚州北部)创建 EventBridge 规则

1.    打开 EventBridge 控制台

2.    在导航窗格中,选择规则,然后选择创建规则

3.    在 Name(名称)和 Description(描述)字段中,输入规则的名称和描述。要接收来自 AWS 服务的事件,请选择 Enable the rule on the selected eventbus(在所选事件总线上启用规则)。

4.    选择 Rule with an event pattern(带有事件模式的规则)。然后,选择 Next(下一步)。

5.    选择 AWS Events or EventBridge partner events(AWS 事件或 EventBridge 合作伙伴事件)。

6.    在 Event Pattern(事件模式)下,选择以下内容:

对于 Event Source(事件源),选择 **AWS services(AWS 服务)**对于 AWS service(AWS 服务),选择 Route 53对于 Event Type(事件类型),选择 AWS API Call via CloudTrail(通过 CloudTrail 进行 AWS API 调用)

7.    选择 Specific Operation(s)(特定操作),然后在字段中输入 ChangeResourceRecordSets。这将限制事件仅与资源记录集的创建、删除或更新相匹配。

此时将显示以下事件模式:

{
  "source": ["aws.route53"],
  "detail-type": ["AWS API Call via CloudTrail"],
  "detail": {
    "eventSource": ["route53.amazonaws.com"],
    "eventName": ["ChangeResourceRecordSets"]
  }
}

8.    选择 Next(下一步)继续下一步。

将 SNS 目标与 EventBridge 规则关联

1.     在 Target types(目标类型)部分中,选择 AWS Service(AWS 服务)。

2.    在 Select a target(选择目标)下拉列表中,选择 SNS topic(SNS 主题)。

3.    在 Topic(主题)下拉列表中,选择您之前创建的 SNS 主题。

配置输入转换器以自定义 SNS 通知

默认情况下,EventBridge 会将整个 CloudTrail 事件转发到目标。然后,SNS 主题以未格式化的 JSON 形式发送通知。这可能难以阅读和快速理解内容。

通过使用输入转换器,可以选择入站事件中的特定字段,然后将其集成到更易读的消息中。Input Path(输入路径)标识所需的字段。

在此示例中,通知中包含 eventTimehostedZoneusernameeventID。可以更改这些字段以与您的使用案例保持一致。Input Template(输入模板)包含通知的消息正文和占位符,这些占位符将使用所需的字段动态更新。

1.    展开 Additional settings(其他设置)下拉列表。在 Configure target input(配置目标输入)下拉列表中,选择 Input transformer(输入转换器)。

2.    选择 Configure input transformer(配置输入转换器)。

3.    在 Input path(输入路径)字段中,粘贴以下文本:

{
    "eventTime": "$.detail.eventTime",
    "hostedZone": "$.detail.requestParameters.hostedZoneId",
    "userName": "$.detail.userIdentity.sessionContext.sessionIssuer.userName",
    "eventID": "$.detail.eventID"
}

4.    在 Template(模板)字段中,粘贴以下文本:

"At <eventTime>, one or more Route 53 records within Hosted Zone <hostedZone> were modified by user <userName>. To view the event directly in your Event History and review these changes, use the following link. Note that the event may take up to 15 minutes to be available in your Event History: https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>"

6.    选择 Confirm(确认)。

7.    (可选)向 EventBridge 规则添加标签。然后,选择 Next(下一步)。

8.    查看规则配置。然后,选择 Create rule(创建规则)。

创建规则后,对 Route 53 资源集的任何更改都将生成类似于以下内容的通知:

"At 2022-08-16T21:02:46Z, one or more Route 53 records within Hosted Zone ZB3A123456789 were modified by user Admin. To view the event directly in your Event History and review these changes, use the following link. Note that the event may take up to 15 minutes to be available in your Event History: https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=04d08662-537e-4424-97c2-8bc796943b75"

相关信息

如何为 EventBridge 规则创建自定义事件模式?

如何使用输入转换器为 API 调用设置人类可读的 EventBridge 通知?

教程:使用输入转换器自定义 EventBridge 传递给事件目标的内容

教程:使用 EventBridge 记录 AWS API 调用

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