module Audit53::Route53
Public Class Methods
client(region: 'us-west-1')
click to toggle source
# File lib/audit53/route53.rb, line 9 def self.client(region: 'us-west-1') @client ||= Aws::Route53::Client.new region: region end
cname_ips(zone_id:)
click to toggle source
# File lib/audit53/route53.rb, line 40 def self.cname_ips(zone_id:) records_subset(zone_id: zone_id, type: 'CNAME') .select { |k, _| k.start_with? 'ec2' } .map { |k, v| { k.split('.').first.split('-').last(4).join('.') => v } } .reduce({}, :update) end
ips(zone_id:)
click to toggle source
# File lib/audit53/route53.rb, line 48 def self.ips(zone_id:) records_subset(zone_id: zone_id, type: 'A"').merge cname_ips(zone_id: zone_id) end
records(zone_id:)
click to toggle source
# File lib/audit53/route53.rb, line 24 def self.records(zone_id:) @records ||= client.list_resource_record_sets(hosted_zone_id: zone_id) .each_page .flat_map(&:resource_record_sets) .reject(&:alias_target) end
records_subset(zone_id:, type:)
click to toggle source
# File lib/audit53/route53.rb, line 32 def self.records_subset(zone_id:, type:) records(zone_id: zone_id) .select { |r| r.type == type } .map { |r| { r.resource_records.first.value => r.name } } .reduce({}, :update) end
zone_id(domain:)
click to toggle source
# File lib/audit53/route53.rb, line 14 def self.zone_id(domain:) domain += '.' unless domain.end_with? '.' @zone_id ||= client.list_hosted_zones .hosted_zones .select { |z| z.name == domain } .map { |z| z.id.split('/').last } .reduce end