Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中获取AWS ELB的托管区域ID?_Ruby_Amazon Ec2_Amazon Web Services_Amazon Elb - Fatal编程技术网

如何在Ruby中获取AWS ELB的托管区域ID?

如何在Ruby中获取AWS ELB的托管区域ID?,ruby,amazon-ec2,amazon-web-services,amazon-elb,Ruby,Amazon Ec2,Amazon Web Services,Amazon Elb,我正在编写一些Ruby代码,以使用Zone apex虚拟A记录功能自动更新Route53 DNS区域(域)。但是,要设置此类记录,除了FQDN之外,还需要弹性负载平衡器承载的区域ID 有人知道最好的方法吗?(即,有任何宝石等可以做到这一点?) 我目前正在使用appoxy aws gem和pcorliss的route53 gem 谢谢。Aws gemAws::Elb代码使用的是Aws Elb API版本2009-05-15。自那以后,Amazon进行了几次API版本更新,最近一次是2011年11月

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

有人知道最好的方法吗?(即,有任何宝石等可以做到这一点?) 我目前正在使用appoxy aws gem和pcorliss的route53 gem


谢谢。

Aws gem
Aws::Elb
代码使用的是Aws Elb API版本2009-05-15。自那以后,Amazon进行了几次API版本更新,最近一次是2011年11月15日

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

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

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

在现代,我提出了这个解决方案(部分伪代码):

credentials_data=#某物
config=AWS.config(凭证和数据)
elb_name='your.elb.dns.name.elb.amazonaws.com'
elb_client=config.elb_client
response=elb\u client.description\u load\u balancers()
elbs=响应[:负载\平衡器\说明]
|elb=elbs.select{| elb | elb[:dns_name]==elb_name}
_hosted_id=_elb[:规范的_hosted_zone_name_id]
然后,稍后在执行Route53任务时,您可以将这些数据包括在内,如下所示:

#。。。
:别名_目标=>{
:dns_name=>elb_name,
:hosted_zone_id=>_hosted_id,
:evaluate_target_health=>true、#或false,如果您愿意
},
# ...
我承认,我真希望这一切都有一个好的“ruby-ish”(更惯用的)前端(或者可能有,我只需要去寻找它),但是上面的内容对我使用stock
aws sdk
gem很有用。希望这对某些人有所帮助