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

上次更新时间:2020 年 4 月 10 日

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

简短描述

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

解决方法

如果您尚未创建 Amazon SNS 主题,请按照 Amazon SNS 入门中的说明创建一个。

注意:Amazon SNS 主题必须位于美国东部(弗吉尼亚北部)区域。有关更多信息,请参阅使用 CloudTrail 记录 Route 53 API 调用

使用 Amazon EventBridge 触发电子邮件通知

1.    打开 EventBridge 控制台

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

3.    在名称和描述中,输入规则的名称和描述。

4.    在定义模式中,选择事件模式,然后选择按服务预先定义的模式

5.    在服务提供商下拉菜单中,选择 AWS

6.    在服务名称下拉菜单中,选择 Route 53

7.    在事件类型下拉菜单中,选择通过 CloudTrail 进行 AWS PLI 调用

8.    要为特定 API 调用触发规则,请选择特定操作

9.    在文本框中,输入 ChangeResourceRecordSets

10.    在目标下拉菜单中,选择 SNS 主题

11.    在主题下拉菜单中,选择您的 SNS 主题。

12.    展开配置输入,然后选择输入转换器

13.    复制下面的输入路径。然后将其粘贴到输入路径中。

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

14.    复制下面的输入模板。然后将其粘贴到输入模板中。

“在 <eventTime> 时,用户 <userName> 修改了托管区域 <hostedZone> 内的一个或多个 Route 53 记录。要直接在事件历史记录中查看事件并检查更改,请使用下面的链接。请注意,事件可能最多需要 15 分钟才能显示在您的事件历史记录中:https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>”

15.    选择创建

16.    触发某个事件类型时,您将收到一封 SNS 电子邮件通知,其中的自定义字段将从第 14 步填充,包含至您的事件历史记录的控制台链接,与以下所示类似:

"At 2020-01-08T17:34:13Z, one or more Route53 records within Hosted Zone
 Z2QQOQ12345678 were modified by user exampleuser. 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=18c12bff-c379-1234-993f-41d3312342f99"

触发电子邮件通知的 CloudWatch Events

1.    打开 CloudWatch 控制台

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

3.    在服务名称下拉菜单中,选择 Route 53

4.    在事件类型下拉菜单中,选择通过 CloudTrail 进行 AWS API 调用

5.    要为特定 API 调用触发规则,请选择特定操作

6.    在文本框中,输入 ChangeResourceRecordSets

7.    在目标中,选择添加目标

8.    在选择目标中,选择 SNS 主题

9.    在目标下拉菜单中,选择 SNS 主题

10.    在主题下拉菜单中,选择您的 SNS 主题。

11.    展开配置输入,然后选择输入转换器

12.    复制下面的输入路径。然后将其粘贴到输入路径中。

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

13.    复制下面的输入模板。然后将其粘贴到输入模板中。

“在 <eventTime> 时,用户 <userName> 修改了托管区域 <hostedZone> 内的一个或多个 Route 53 记录。要直接在事件历史记录中查看事件并检查更改,请使用下面的链接。请注意,事件可能最多需要 15 分钟才能显示在您的事件历史记录中:https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>”

14.    选择配置详细信息

15.    在配置规则详细信息中,输入规则的名称和描述,然后选择创建规则

16.    I触发某个事件类型时,您将收到一封 SNS 电子邮件通知,其中的自定义字段将从第 13 步填充,与以下所示类似:

"At 2020-01-08T17:34:13Z, one or more Route 53 records within Hosted Zone Z2QQOQ12345678 were modified by user exampleuser. 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=18c12bff-c379-4d5f-993f-41d3312342f99"

解析输出

您可以显示作为 SNS 主题通知进行的 ChangeResourceRecordSets API 调用的一部分传递的特定更改操作、记录名称、记录类型和值。然而,在下面的示例中,对于包含多个更改的批次,可能难以解析输出:

示例输入路径:

{
"eventTime":"$.detail.eventTime",
"hostedZone":"$.detail.requestParameters.hostedZoneId",
"userName": "$.detail.userIdentity.sessionContext.sessionIssuer.userName",
"eventID":"$.detail.eventID",
"action":"$.detail.requestParameters.changeBatch.changes[*].action",
"recordType":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.type",
"recordName":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.name",
"value":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.resourceRecords[*].value"
}

示例输入模板:

“在 <eventTime> 时,用户 <userName> 修改了托管区域 <hostedZone> 内记录类型为 <recordType> 的 Route 53 记录 <recordName>。记录值已配置为 <value>。要直接在事件历史记录中查看事件并检查更改,请使用下面的链接。请注意,事件可能最多需要 15 分钟才能显示在您的事件历史记录中:https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>”

示例通知:

"At 2020-01-08T18:38:25Z, Route 53 record(s) 
[eventtest1.example.com,eventtest2.example.com,eventtest3.example.com] 
of record type(s) [A,A,A] within Hosted Zone Z2QQOQG4PLKFJ3 were 
modified by user testuser. The record values were configured to 
[1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4,5.5.5.5,6.6.6.6,10.10.10.10,15.15.15.15,20.20.20.20].
 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=6ce46abc-12345678-a286-090aded68b29"

如果您想要接收 SNS 主题通知的所有更改详细信息并以更易读的格式显示它们,请考虑使用 AWS Lambda。例如,您可以将整个 JSON 事件传递到 Lambda 函数目标以解析操作、记录类型、记录名称和值的数据数组。