«前の日記(2011-08-09 (Tue)) 最新 次の日記(2011-08-15 (Mon))» 編集

雑記帳


2011-08-10 (Wed) [長年日記]

[AWS][Ruby] 各リージョンごとにEC2、AMI、ELB、Snapshot、Elastic IPの一覧を取得

色々と実験をやっていると、どのリージョンに何を作ったのかがわからなくなってくることがあったけど、AWS Management Consoleだとリージョン別でしか見られなくて残念な思いをしたので、スクリプトを作った。

require 'aws-sdk'

def get_status(o)
  "#{o.id}, #{o.tags['Name']}, #{o.status if o.respond_to? :status}"
end

yaml = YAML.load(File.read('config.yml'))
AWS.config(yaml)

ec2 = AWS::EC2.new
owner_id = yaml['owner-id']

ec2.regions.each do |r|
  puts r.name
  r.instances.each do |i|
    puts "\t#{get_status(i)}"
  end

  r.images.filter('owner-id', owner_id).each do |i|
    puts "\t#{get_status(i)}"
  end

  r.volumes.each do |v|
    puts "\t#{get_status(v)}"
  end

  r.snapshots.filter('owner-id', owner_id).each do |s|
    puts "\t#{get_status(s)}"
  end

  r.elastic_ips.each do |i|
   puts "\t#{i.public_ip}, #{i.instance_id or 'not allocated'}"
 end
end

config.ymlに、owner-idを追加する。

owner-id: "000011112222"

実行結果は、こんな感じに。

eu-west-1
us-east-1
        i-d0f88446, test, running
        vol-ad14cf3a, , in_use
ap-northeast-1
        i-bde0085f, sdktest, running
        ami-8c46080c, middleware installed,
        vol-5a627cf0, , in_use
        snap-89af9deb, backup at 2011-08-01, completed
        175.41.255.172, not allocated
us-west-1
ap-southeast-1

現時点ではこの程度でいいけど、今後はもっと対象を増やしたくなりそう。