Module: Aws::Route53

Defined in:
lib/roadworker/route53-ext.rb

Constant Summary collapse

S3_WEBSITE_ENDPOINTS =
{
  's3-website-ap-northeast-1.amazonaws.com' => 'Z2M4EHUR26P7ZW',
  's3-website.ap-northeast-2.amazonaws.com' => 'Z3W03O7B5YMIYP',
  's3-website.ap-south-1.amazonaws.com'     => 'Z11RGJOFQNVJUP',
  's3-website-ap-southeast-1.amazonaws.com' => 'Z3O0J2DXBE1FTB',
  's3-website-ap-southeast-2.amazonaws.com' => 'Z1WCIGYICN2BYD',
  's3-website.eu-central-1.amazonaws.com'   => 'Z21DNDUVLTQW6Q',
  's3-website-eu-west-1.amazonaws.com'      => 'Z1BKCTXD74EZPE',
  's3-website-sa-east-1.amazonaws.com'      => 'Z7KQH4QJS55SO',
  's3-website-us-east-1.amazonaws.com'      => 'Z3AQBSTGFYJSTF',
  's3-website-us-gov-west-1.amazonaws.com'  => 'Z31GFT0UA1I2HV',
  's3-website-us-west-1.amazonaws.com'      => 'Z2F56UZL2M1ACD',
  's3-website-us-west-2.amazonaws.com'      => 'Z3BJ6K6RIION7M',
}
CANONICAL_HOSTED_ZONE_NAME_IDS =
{
  'ap-northeast-1' => 'Z2YN17T5R711GT',
  #'ap-northeast-2' => '',
  #'ap-south-1'     => '',
  'ap-southeast-1' => 'Z1WI8VXHPB1R38',
  'ap-southeast-2' => 'Z2999QAZ9SRTIC',
  'eu-central-1'   => 'Z215JYRZR1TBD5',
  'eu-west-1'      => 'Z3NF1Z3NOM5OY2',
  'sa-east-1'      => 'Z2ES78Y61JGQKS',
  'us-east-1'      => 'Z3DZXE0Q79N41H',
  'us-west-1'      => 'Z1M58G0W56PQJA',
  'us-west-2'      => 'Z33MTJ483KN6FU',
}
DUALSTACK_CANONICAL_HOSTED_ZONE_NAME_IDS =
{
   'ap-northeast-1' => 'Z14GRHDCWA56QT',
   'ap-northeast-2' => 'ZWKZPGTI48KDX',
   'ap-south-1'     => 'ZP97RAFLXTNZK',
   'ap-southeast-1' => 'Z1LMS91P8CMLE5',
   'ap-southeast-2' => 'Z1GM3OXH4ZPM65',
   'eu-central-1'   => 'Z215JYRZR1TBD5',
   'eu-west-1'      => 'Z32O12XQLNTSW2',
   'sa-east-1'      => 'Z2P70J7HTTTPLU',
   'us-east-1'      => 'Z35SXDOTRQ7X7K',
   'us-west-1'      => 'Z368ELLRRE2KJ0',
   'us-west-2'      => 'Z1H1FL5HABSF5',
}
NLB_CANONICAL_HOSTED_ZONE_NAME_IDS =
{
  'us-east-2' => 'ZLMOA37VPKANP',
  'us-east-1' => 'Z26RNL4JYFTOTI',
  'us-west-1' => 'Z24FKFUX50B4VW',
  'us-west-2' => 'Z18D5FSROUN65G',
  'ap-south-1' => '  ZVDDRBQ08TROA',
  # 'ap-northeast-3' => '',
  'ap-northeast-2' => 'ZIBE1TIR4HY56',
  'ap-southeast-1' => 'ZKVM4W9LS7TM',
  'ap-southeast-2' => 'ZCT6FZBF4DROD',
  'ap-northeast-1' => 'Z31USIVHYNEOWT',
  'ca-central-1' => 'Z2EPGBW3API2WT',
  # 'cn-north-1' => '',
  # 'cn-northwest-1' => '',
  'eu-central-1' => 'Z3F0SRJ5LGBH90',
  'eu-west-1' => 'Z2IFOLAFXWLO4F',
  'eu-west-2' => 'ZD4D7Y8KGAS4G',
  'eu-west-3' => 'Z1CMS0P5QUZ6D5',
  'eu-north-1' => 'Z1UDT6IFJ4EJM',
  'sa-east-1' => 'ZTK26PT1VY4CU',
}
CF_HOSTED_ZONE_ID =
'Z2FDTNDATAQYW2'
ELASTIC_BEANSTALK_HOSTED_ZONE_NAME_IDS =
{
  'ap-northeast-1' => 'Z1R25G3KIG2GBW',
  'ap-northeast-2' => 'Z3JE5OI70TWKCP',
  'ap-south-1'     => 'Z18NTBI3Y7N9TZ',
  'ap-southeast-1' => 'Z16FZ9L249IFLT',
  'ap-southeast-2' => 'Z2PCDNR3VC2G1N',
  'eu-central-1'   => 'Z1FRNW7UH4DEZJ',
  'eu-west-1'      => 'Z2NYPWQ7DFZAZH',
  'sa-east-1'      => 'Z10X7K2B4QSOFV',
  'us-east-1'      => 'Z117KPS5GTRQ2G',
  'us-east-2'      => 'Z14LCN19Q5QHIC',
  'us-west-1'      => 'Z1LQECGX5PH1X',
  'us-west-2'      => 'Z38NKT9BP95V3O',
}
API_GATEWAY_HOSTED_ZONE_NAME_IDS =
{
  "us-east-2"       => "ZOJJZC49E0EPZ",
  "us-east-1"       => "Z1UJRXOUMOOFQ8",
  "us-west-1"       => "Z2MUQ32089INYE",
  "us-west-2"       => "Z2OJLYMUO9EFXC",
  "ap-south-1"      => "Z3VO1THU9YC4UR",
  "ap-northeast-3"  => "Z2YQB5RD63NC85",
  "ap-northeast-2"  => "Z20JF4UZKIW1U8",
  "ap-southeast-1"  => "ZL327KTPIQFUL",
  "ap-southeast-2"  => "Z2RPCDW04V8134",
  "ap-northeast-1"  => "Z1YSHQZHG15GKL",
  "ca-central-1"    => "Z19DQILCV0OWEC",
  "eu-central-1"    => "Z1U9ULNL0V5AJ3",
  "eu-west-1"       => "ZLY8HYME6SFDD",
  "eu-west-2"       =>  "ZJ5UAJN8Y3Z2Q",
  "eu-west-3"       =>  "Z3KY65QIEKYHQQ",
  "sa-east-1"       =>  "ZCMLWB8V5SYIT"
}

Class Method Summary collapse

Class Method Details

.dns_name_to_alias_target(name, options, hosted_zone_id, hosted_zone_name) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/roadworker/route53-ext.rb', line 126

def dns_name_to_alias_target(name, options, hosted_zone_id, hosted_zone_name)
  hosted_zone_name = hosted_zone_name.sub(/\.\z/, '')
  name = name.sub(/\.\z/, '')
  options ||= {}

  if name =~ /([^.]+)\.elb\.amazonaws.com\z/i
    # CLB or ALB
    region = $1.downcase
    alias_target = elb_dns_name_to_alias_target(name, region, options)

    # XXX:
    alias_target.merge(options)
  elsif name =~ /\.elb\.([^.]+)\.amazonaws\.com\z/i
    # NLB
    region = $1.downcase
    alias_target = nlb_dns_name_to_alias_target(name, region, options)
  elsif (s3_hosted_zone_id = S3_WEBSITE_ENDPOINTS[name.downcase]) and name =~ /\As3-website-([^.]+)\.amazonaws\.com\z/i
    region = $1.downcase
    s3_dns_name_to_alias_target(name, region, s3_hosted_zone_id)
  elsif name =~ /\.cloudfront\.net\z/i
    cf_dns_name_to_alias_target(name)
  elsif name =~ /(\A|\.)#{Regexp.escape(hosted_zone_name)}\z/i
    this_hz_dns_name_to_alias_target(name, hosted_zone_id, options)
  elsif name =~ /\.([^.]+)\.elasticbeanstalk\.com\z/i
    region = $1.downcase
    eb_dns_name_to_alias_target(name, region)
  elsif name =~ /\.execute-api\.([^.]+)\.amazonaws\.com\z/i
    region = $1.downcase
    apigw_dns_name_to_alias_target(name, region, hosted_zone_id)
  elsif name =~ /\.([^.]+)\.vpce\.amazonaws\.com\z/i
    region = $1.downcase
    vpce_dns_name_to_alias_target(name, region, hosted_zone_id)
  elsif name =~ /\.awsglobalaccelerator\.com\z/i
    globalaccelerator_dns_name_to_alias_target(name)
  else
    raise "Invalid DNS Name: #{name}"
  end
end

.normalize_dns_name_options(src) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
# File 'lib/roadworker/route53-ext.rb', line 114

def normalize_dns_name_options(src)
  dst = {}

  {
    :evaluate_target_health => false,
  }.each do |key, defalut_value|
    dst[key] = src[key] || false
  end

  return dst
end

.sort_rrset_values(attribute, values) ⇒ Object



165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/roadworker/route53-ext.rb', line 165

def sort_rrset_values(attribute, values)
  sort_lambda =
    case attribute
    when :resource_records
      # After aws-sdk-core v3.44.1, Aws::Route53::Types::ResourceRecord#to_s returns filtered string
      # like "{:value=>\"[FILTERED]\"}" (cf. https://github.com/aws/aws-sdk-ruby/pull/1941).
      # To keep backward compatibility, sort by the value of resource record explicitly.
      lambda { |i| i[:value] }
    else
      lambda { |i| i.to_s }
    end

  values.sort_by(&sort_lambda)
end