我们开发了一个警报系统,每次从53号干线dns记录中添加或删除一个新的主机名。系统自动检测集群中添加了一个新实例,通过标记填充其主机名,并通过cli脚本将其发送到路由53,更新域记录,添加或删除已删除的ec2实例的主机名或添加添加的ec2实例。但是,由于我们是一个大型组织,这将为该组织的aws环境中的所有域名提供警报。我们希望将其限制为几个特定的域名(例如,在dev环境中并不是所有的域名)。
可以想象,我们部署了EventBridge来将SNS触发到一个松弛的端点。
但是为了限制对系统中两个域的告警,我们希望能够在eventBridge触发事件并发送警报之前过滤域名,因此只能在特定域而不是所有域上获取警报。
如何筛选Route53在触发事件桥事件之前正在处理的域名?
谢谢。
发布于 2022-01-22 10:24:44
解决方案1
如果要触发的域记录位于同一路由53托管区域中,则可以使用以下EventBridge事件模式根据托管区域ID进行筛选:
{
"source": ["aws.route53"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["route53.amazonaws.com"],
"eventName": ["ChangeResourceRecordSets"],
"requestParameters": {
"hostedZoneId": ["your-hosted-zone-id-of-domain1-here", "hosted-zone-id-of-domain2-here"]
}
}
}上述事件模式将匹配对ids位于hostedZoneId数组中的任何托管区域中的记录所做的更改。
解决方案2
仅在必须触发宿主区域中的特定域或子域,而不是对托管区域中的所有域记录更改触发时,才使用此方法:
{
"source": [
"aws.route53"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"route53.amazonaws.com"
],
"eventName": [
"ChangeResourceRecordSets"
],
"requestParameters": {
"changeBatch": {
"changes": {
"resourceRecordSet": {
"name": ["subdomain.example.com.", "example.com."]
}
}
}
}
}
}上面的事件模式将匹配对“ChangeResourceRecordSets”进行更改的subdomain.example.com API调用。或者“example.com”
免责声明: API调用允许更改同一个API调用中的多个域记录,只要它们位于同一个托管区域。即使API调用中只有一个域记录更改与您相关,事件也会触发。这使得解决方案1更可靠,更容易编写代码。
https://stackoverflow.com/questions/70806403
复制相似问题