Module: Audit53::Route53
- Includes:
- Contracts
- Defined in:
- lib/audit53/route53.rb
Class Method Summary collapse
- .client(region: 'us-west-1') ⇒ Object
- .cname_ips(zone_id:) ⇒ Object
- .ips(zone_id:) ⇒ Object
- .records(zone_id:) ⇒ Object
- .records_subset(zone_id:, type:) ⇒ Object
- .zone_id(domain:) ⇒ Object
Class Method Details
.client(region: 'us-west-1') ⇒ Object
9 10 11 |
# 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:) ⇒ Object
40 41 42 43 44 45 |
# 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:) ⇒ Object
48 49 50 |
# 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:) ⇒ Object
24 25 26 27 28 29 |
# 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:) ⇒ Object
32 33 34 35 36 37 |
# 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:) ⇒ Object
14 15 16 17 18 19 20 21 |
# 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 |