获取有关具有特定标签值的所有 Amazon EC2 实例的信息 - 适用于 Ruby 的 Amazon 开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

获取有关具有特定标签值的所有 Amazon EC2 实例的信息

以下代码示例列出了与指定标签密钥和值匹配的可用 Amazon EC2 实例的 ID 和当前状态。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX - License - Identifier: Apache - 2.0 require 'aws-sdk-ec2' # Lists the IDs, current states, and tag keys/values of matching # available Amazon Elastic Compute Cloud (Amazon EC2) instances. # # @param ec2_resource [Aws::EC2::Resource] An initialized EC2 resource object. # @param tag_key [String] The key portion of the tag to search on. # @param tag_value [String] The value portion of the tag to search on. # @example # list_instance_ids_states_by_tag( # Aws::EC2::Resource.new(region: 'us-east-1'), # 'my-key', # 'my-value' # ) def list_instance_ids_states_by_tag(ec2_resource, tag_key, tag_value) response = ec2_resource.instances( filters: [ { name: "tag:#{tag_key}", values: [tag_value] } ] ) if response.count.zero? puts 'No matching instances found.' else puts 'Matching instances -- ID, state, tag key/value:' response.each do |instance| print "#{instance.id}, #{instance.state.name}" instance.tags.each do |tag| print ", #{tag.key}/#{tag.value}" end print "\n" end end rescue StandardError => e puts "Error getting information about instances: #{e.message}" end #Full example call: def run_me tag_key = '' tag_value = '' region = '' # Print usage information and then stop. if ARGV[0] == '--help' || ARGV[0] == '-h' puts 'Usage: ruby ec2-ruby-example-get-instance-info-by-tag.rb ' \ 'TAG_KEY TAG_VALUE REGION' puts 'Example: ruby ec2-ruby-example-get-instance-info-by-tag.rb ' \ 'my-key my-value us-east-1' exit 1 # If no values are specified at the command prompt, use these default values. elsif ARGV.count.zero? tag_key = 'my-key' tag_value = 'my-value' region = 'us-east-1' # Otherwise, use the values as specified at the command prompt. else tag_key = ARGV[0] tag_value = ARGV[1] region = ARGV[2] end ec2_resource = Aws::EC2::Resource.new(region: region) list_instance_ids_states_by_tag(ec2_resource, tag_key, tag_value) end run_me if $PROGRAM_NAME == __FILE__