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