Ruby aws-sk:未定义的方法

时间:2015-06-20 17:36:22

标签: ruby amazon-web-services amazon-ec2 aws-sdk

尝试让ruby使用ruby AWS sdk,但不断收到以下错误:

aws.rb:10:<main>': undefined method个实例&#39; #(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 个答案:

答案 0 :(得分:2)

Ruby SDK的V1和v2在这里有不同的方法。在v2中,您决定使用客户端API还是资源API。客户端API提供API操作的方法的一对一映射。资源apis提供类似于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