7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/linecook-gem/packager/route53.rb', line 7
def upsert_record(name, ami, region)
ami_config = Linecook.config[:packager][:ami]
zone = [ami_config[:zone], ami_config[:regions][region.to_sym], ami_config[:domain]].compact.join('.')
record = "#{name}.#{zone}"
resp = client.list_hosted_zones_by_name({
dns_name: zone,
max_items: 1,
})
if resp.hosted_zones.size < 1
puts "Failed to find dns zone: #{resp.dns_name}"
return false
end
zone_id = resp.hosted_zones[0].id
client.change_resource_record_sets({
hosted_zone_id: zone_id,
change_batch: {
comment: "create #{ami}",
changes: [
{
action: "UPSERT",
resource_record_set: {
name: record,
type: 'TXT',
ttl: 1,
resource_records: [
{
value: "\"#{ami}\"",
},
],
},
},
],
},
})
puts "Saved #{ami} to #{record}"
rescue Aws::Route53::Errors::ServiceError => e
puts "AWS Error: #{e.code} #{e.context.http_response.body_contents}"
return false
end
|