雑記帳
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
現時点ではこの程度でいいけど、今後はもっと対象を増やしたくなりそう。
[ツッコミを入れる]
