使用 Ruby 通过通配符列出 EC2 实例
listing EC2 instances by wildcard with Ruby
我想列出所有名称包含 loadtest 的实例。
我试过各种形式的 filter
和 filters
都没有成功
到目前为止我所拥有的是:
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
我想列出所有名称包含 loadtest 的实例。
我试过各种形式的 filter
和 filters
都没有成功
到目前为止我所拥有的是:
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