Ruby aws-sk:未定义的方法

Ruby aws-sk: undefined method

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

aws.rb:10:在 <main>': undefined method 个实例中 # (NoMethodError)

根据 Whosebug 上的其他帖子,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

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

已定义 actions/methods 的资源接口 return 个对象,例如 Aws::EC2::Instance#terminate.

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

或者,您可以使用客户端 API。客户端 return 具有相似属性但没有其他属性的纯数据对象 actions/methods。

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