尝试让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
答案 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