ruby - 使用 Ruby 通过通配符列出 EC2 实例

标签 ruby amazon-ec2 aws-sdk

我想列出名称中包含loadtest 的所有实例。

我尝试过各种形式的filterfilters 都没有成功 到目前为止我所拥有的是:

ec2 = Aws::EC2::Client.new
ec2.describe_instances.each do |page|
  page.reservations.each do |reservation|
    reservation.instances.each do |instance|
      puts instance.tags
      puts instance.state
      puts instance.state.name
    end 
  end 
end

我希望得到类似于 :

的散列
{Name: loadtest-1west, id: <someid>, state: running}
{Name: loadtest-10west, id: <someid>, state: stopped}

最佳答案

假设您使用的是 Name在您的实例上标记 describe_instances调用看起来像这样:

ec2.describe_instances({
  filters: [{ name: 'tag:Name', values: ['loadtest*'] }]
})

对于标签,过滤器名称是 tag:<name-of-tag> .

你可以遍历响应并输出你想要的字段(没有分页的例子):

def name_tag(tags)
  name = tags.select {|t| t.key == 'Name'}
  name[0].value if name.length > 0
end

ec2.describe_instances({
  filters: [{ name: 'tag:Name', values: ['loadtest*'] }]
}).reservations.each do |reservation|
  reservation['instances'].each do |instance|
    name = name_tag(instance.tags)
    puts "{Name: #{name}, id: #{instance.instance_id}, state: #{instance.state.name}}"
  end
end

关于ruby - 使用 Ruby 通过通配符列出 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283542/

相关文章:

ruby - 创建工厂对象时传递一个 id

scripting - 如何测试无需实际创建ec2实例的脚本?

mysql - 在 Ec2 实例上安装 Wordpress,数据库位于 RDS 实例上

amazon-web-services - 如何使用 AWS SAM 让我的函数按计划运行而不是 API 调用

ios - 如何将登录映射添加到 CredentialsProvider?

ruby - 如何在haml中使用循环内的变量?

ruby-on-rails - 更新父级时未设置父级 ID

go - 通过 AWS SDK GO 将 gzip 文件流式传输到 S3

ruby - Ruby 中奇怪的 Proc 错误

php - 如何在私有(private)子网VPC中将PHP连接到MySQL