如何访问aws ec2标签
how to access aws ec2 tags
我正在尝试找出访问 AWS 标签的方法,然后 运行 带有标签的实例上的一些代码。
如何使用适用于 Ruby - 版本 2 的 AWS SDK 访问实例标签的每个键和值?
#!/usr/bin/ruby
require 'rubygems'
require 'aws-sdk'
require 'yaml'
Aws.config.update({
region: region,
credentials: Aws::Credentials.new(ENV_YML['access_key_id'], ENV_YML['secret_access_key'])
})
ec2 = Aws::EC2::Resource.new
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |num|
### pseudo code
puts tag owner # i want to get the value of tag owner
if tag owner = "test" #then run on this tag if
puts tag name #print the value of tag name
#some code
else
#some code
end
end
当我做这样的事情时:
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |num|
puts num
end
end
输出为:
#<struct Aws::EC2::Types::Tag key="Name", value="test.ec2.blabla.int">
但我希望能够通过调用键(名称)或其他方式仅获取值。
请帮忙,
谢谢。
你可以使用 facter
gem :
ec2.instances.each do |instance|
tag_name = Facter::Util::Resolution.exec("ec2-describe-tags --region eu-west-1 --filter \"resource-id=#{instance.id}\" --filter key=Name | cut -f 5")
instance.tags
return 是一个 Aws::EC2::Types::Tag
对象数组。
class 的文档是:
http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Types/Tag.html
访问标签值的正确方法是 tag.value
像这样:
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |tag|
puts tag.value
end
end
如果您想要特定标签的值,比如说 Name 标签,您可以这样做:
instance.tags.select{|tag| tag.key == "Name"}.first.try(:value)
如果标签不存在,它将return nil
。
我正在尝试找出访问 AWS 标签的方法,然后 运行 带有标签的实例上的一些代码。
如何使用适用于 Ruby - 版本 2 的 AWS SDK 访问实例标签的每个键和值?
#!/usr/bin/ruby
require 'rubygems'
require 'aws-sdk'
require 'yaml'
Aws.config.update({
region: region,
credentials: Aws::Credentials.new(ENV_YML['access_key_id'], ENV_YML['secret_access_key'])
})
ec2 = Aws::EC2::Resource.new
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |num|
### pseudo code
puts tag owner # i want to get the value of tag owner
if tag owner = "test" #then run on this tag if
puts tag name #print the value of tag name
#some code
else
#some code
end
end
当我做这样的事情时:
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |num|
puts num
end
end
输出为:
#<struct Aws::EC2::Types::Tag key="Name", value="test.ec2.blabla.int">
但我希望能够通过调用键(名称)或其他方式仅获取值。
请帮忙,
谢谢。
你可以使用 facter
gem :
ec2.instances.each do |instance|
tag_name = Facter::Util::Resolution.exec("ec2-describe-tags --region eu-west-1 --filter \"resource-id=#{instance.id}\" --filter key=Name | cut -f 5")
instance.tags
return 是一个 Aws::EC2::Types::Tag
对象数组。
class 的文档是:
http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Types/Tag.html
访问标签值的正确方法是 tag.value
像这样:
ec2.instances.each do |instance|
tags = instance.tags
tags.each do |tag|
puts tag.value
end
end
如果您想要特定标签的值,比如说 Name 标签,您可以这样做:
instance.tags.select{|tag| tag.key == "Name"}.first.try(:value)
如果标签不存在,它将return nil
。