2

我正在编写一些 Ruby 代码来使用区域顶点虚拟 A 记录功能自动更新 Route53 DNS 区域(域)。但是,要设置此类记录,除了 FQDN 之外,还需要弹性负载均衡器托管区域 ID。

有谁知道最好的方法?(即任何可以做到这一点的宝石等?)我目前正在将 appoxy aws gem 与 pcorliss 的 route53 gem 结合使用。

谢谢。

4

2 回答 2

2

在现代AWS Ruby SDK 的 ELB 模块中,我提出了这个解决方案(部分伪代码):

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宝石。希望这在某些时候对某人有所帮助。

于 2015-03-26T03:07:42.743 回答
0

Aws gemAws::Elb代码使用 AWS ELB API 版本 2009-05-15。从那时起,Amazon 进行了几次 API 版本更新 - 目前最新的是 2011 年 11 月 15 日。

DescribeLoadBalaners 响应的格式在版本 2009-05-15 和版本 2009-11-25 之间更改,这会破坏当前Aws::Elb代码(Listeners更改为ListenerDescriptions)。此外,响应中的托管区域元素直到版本 2011-04-05 才添加。

可以通过破解Aws::Elb源以使用最新的 API 并提取相关数据来获取托管区域信息。

现在我们只需要让 Aws 维护人员更新官方 gem。

于 2011-12-02T03:59:02.253 回答