2012-01-23 116 views
1

我想知道是否有人能够帮助我,我在ruby方面相当新颖,并且在尝试使用Amazon Web Service Route53 gem编写脚本时遇到困难。红宝石/亚马逊Route 53 Ruby宝石的语法和用法

当使用示例脚本创建新区域并使用它创建记录时,它工作正常。但是,我不知道如何在创建CNAME记录时指定区域。 new_zone对象是不同的,我不知道它是如何工作的。

我想要做到这一点,只需创建一个新的cname记录。我在这里使用的文档: http://rubydoc.info/gems/route53/0.2.1/frames

new_zone = 'abcd.net. /hostedzone/Z4W3K5G8FBG6R' 

new_record = Route53::DNSRecord.new("cbs.abcd.net.","CNAME","3600",["abcd.net."],new_zone) 
resp = new_record.create 

我怎么指定区域? 我尝试用绳子做到这一点,但它失败...

/var/lib/gems/1.8/gems/route53-0.2.1/lib/route53.rb:364:in `create': undefined method `perform_actions' for "abcd.net. /hostedzone/Z4W3K5G8FBG6R":String (NoMethodError) 
    from ./cname.rb:12 

回答

1

它可能会解决,只是我发现这样一个问题:

require 'route53' 

HOSTED_ZONE_ID = "your_hosted_zone_id" 

conn = Route53::Connection.new('AccessKey', 'SecretKey') 
new_zone = Route53::Zone.new("example.com.", "/hostedzone/#{HOSTED_ZONE_ID}", conn) # you need to pass connection 
new_record = Route53::DNSRecord.new("foo.example.com.","CNAME","3600", ["example.com."],new_zone) 
resp = new_record.create 
0

的new_zone变量不是字符串,但是一个Route53 :: Zone对象。

如果你想使用一个现有区域,你要么需要获取现有区域内的对象变成一个这样的数组:

conn = Route53::Connection.new('access_key','secret_key') 
zones = conn.get_zones("abcd.net.") 
new_record = Route53::DNSRecord.new("cbs.abcd.net.", "CNAME", "3600", ["abcd.net."], zones.first) 
resp = new_record.create 

,或者初始化Route53 ::区对象是这样的:

conn = Route53::Connection.new('access_key','secret_key') 
zone = Route53::Zone.new("abcd.net.", "/hostedzone/Z4W3K5G8FBG6R", conn) 
new_record = Route53::DNSRecord.new("cbs.abcd.net.", "CNAME", "3600", ["abcd.net."], zone) 
resp = new_record.create 

(我想这重复上述的答案,但更说明一下帮助)