我正在编写一些Ruby代码,使用Zone apex虚拟A记录功能自动更新Route53 DNS区域(域)。但是,要设置此类记录,除了FQDN之外,还需要Elastic Load-balancer Hosted Zone ID。
有谁知道最好的方法吗? (即任何可以做到的宝石等?) 我目前正在使用appoxy aws gem和pcorliss的route53 gem。
感谢。
答案 0 :(得分:2)
在现代AWS Ruby SDK's ELB module中,我提出了这个解决方案(部分伪代码):
credentials_data = # something
config = AWS.config(credentials_data)
elb_name = 'your.elb.dns.name.elb.amazonaws.com.'
elb_client = config.elb_client
response = elb_client.describe_load_balancers()
elbs = response[:load_balancer_descriptions]
the_elb = elbs.select {|elb| elb[:dns_name] == elb_name}.first
the_hosted_id = the_elb[:canonical_hosted_zone_name_id]
然后,在执行Route53之后,您可以将此数据包括在内:
# ...
:alias_target => {
:dns_name => elb_name,
:hosted_zone_id => the_hosted_id,
:evaluate_target_health => true, # or false, if you wish
},
# ...
我承认,我确实希望所有这一切都有一个很好的“ruby-ish”(更惯用)的前端(或许有,我只需要找到它),但上面的工作原理我使用股票aws-sdk
宝石。希望在某些时候这对某人有帮助。
答案 1 :(得分:0)
Aws gem Aws::Elb
代码正在使用AWS ELB API版本2009-05-15。亚马逊从那时起已经有几个API版本更新 - 最新的目前是2011-11-15。
DescribeLoadBalaners响应的格式在版本2009-05-15和版本2009-11-25之间进行了更改,这打破了当前的Aws::Elb
代码(Listeners
已更改为ListenerDescriptions
)。此外,在版本2011-04-05之前,未添加响应中的托管区域元素。
可以通过黑客攻击Aws::Elb
来获取托管区域信息,以使用最新的API并提取相关数据。
现在我们只需要让Aws维护者更新官方宝石。