ruby 结构数组
ruby array of structs
我需要使用 AWS ruby-sdk v2
从 AWS EC2
中提取标签值以获取有关实例的信息。标签大部分是手动设置的。
当我从以下代码中获取标签时:
ec2 = Aws::EC2::Resource.new(:region => us-east-1)
ec2.instances.limit(10).each do |instance|
instance.tags.each do |tag|
puts tag
end
end
我明白了:
#<struct Aws::EC2::Types::Tag key="Owner", value="the_owner">
#<struct Aws::EC2::Types::Tag key="PurchaseOrder", value="90210">
#<struct Aws::EC2::Types::Tag key="Name", value="my_rocking_instance">
#<struct Aws::EC2::Types::Tag key="environment", value="staging">
#<struct Aws::EC2::Types::Tag key="Name", value="another_instance">
#<struct Aws::EC2::Types::Tag key="environment", value="prod">
#<struct Aws::EC2::Types::Tag key="PurchaseOrder", value="90210">
#<struct Aws::EC2::Types::Tag key="Owner", value="the_owner">
等等。为了清楚起见,我在两个实例之间放了一个 space 。我用数组、散列等尝试了一些技巧,但这似乎是一个我还没有使用过的结构数组。
如何只提取 Name
标签值?
像这样
ec2.instances.limit(10).each do |instance|
instance.tags.each do |tag|
puts tag.value if tag.key == 'Name'
end
end
或者您也可以使用类似的方法来 return 实例标记值数组(具有键 名称)。
ec2.instances.limit(10).flat_map(&:tags).map{|x| x.value if x.key == 'Name'}.compact
我需要使用 AWS ruby-sdk v2
从 AWS EC2
中提取标签值以获取有关实例的信息。标签大部分是手动设置的。
当我从以下代码中获取标签时:
ec2 = Aws::EC2::Resource.new(:region => us-east-1)
ec2.instances.limit(10).each do |instance|
instance.tags.each do |tag|
puts tag
end
end
我明白了:
#<struct Aws::EC2::Types::Tag key="Owner", value="the_owner">
#<struct Aws::EC2::Types::Tag key="PurchaseOrder", value="90210">
#<struct Aws::EC2::Types::Tag key="Name", value="my_rocking_instance">
#<struct Aws::EC2::Types::Tag key="environment", value="staging">
#<struct Aws::EC2::Types::Tag key="Name", value="another_instance">
#<struct Aws::EC2::Types::Tag key="environment", value="prod">
#<struct Aws::EC2::Types::Tag key="PurchaseOrder", value="90210">
#<struct Aws::EC2::Types::Tag key="Owner", value="the_owner">
等等。为了清楚起见,我在两个实例之间放了一个 space 。我用数组、散列等尝试了一些技巧,但这似乎是一个我还没有使用过的结构数组。
如何只提取 Name
标签值?
像这样
ec2.instances.limit(10).each do |instance|
instance.tags.each do |tag|
puts tag.value if tag.key == 'Name'
end
end
或者您也可以使用类似的方法来 return 实例标记值数组(具有键 名称)。
ec2.instances.limit(10).flat_map(&:tags).map{|x| x.value if x.key == 'Name'}.compact