2015-06-20 57 views
1

试图让红宝石红宝石AWS SDK工作,但不断收到以下错误:红宝石AWS-SK:未定义的方法

aws.rb:10:<main>': undefined method情况下为#(NoMethodError)

从StackOverflow上的其他帖子,aws-sdk的v2从AWS更改为Aws。我也试过Aws :: EC2.new

require 'aws-sdk' 
ec2 = Aws::EC2::Client.new(
    access_key_id: 'mudd', 
    secret_access_key: 'butt', 
    region: 'us-east-1' 
) 

ec2.instances 

回答

1

Ruby SDK的V1和v2在这里有不同的方法。在第2版中,您将决定使用客户端API还是资源API。客户端API为API操作提供了一对一的方法映射。资源API提供了一个类似于V1 SDK的面向对象的接口。你似乎在寻找这个后者的界面。

定义了操作/方法的资源接口返回对象,如Aws::EC2::Instance#terminate

ec2 = Aws::EC2::Resource.new 
ec2.instances.each do |instance| 
    puts instance.id 
end 

或者,您可以使用客户端API。客户端返回具有相似属性的仅数据对象,但没有其他操作/方法。

ec2 = Aws::EC2::Client.new 
ec2.describe_instances.each do |page| 
    page.reservations.each do |reservation| 
    reservation.instances.each do |instance| 
     puts instance.instance_id 
    end 
    end 
end 
相关问题