«前の日記(2010-08-29 (Sun)) 最新 次の日記(2011-08-04 (Thu))» 編集

雑記帳


2011-08-02 (Tue) [長年日記]

[AWS][Ruby] AWS SDK for Rubyでスナップショットの一覧を取得する

この記事の後半に、パブリックなスナップショットも取得できてしまう、filterなどの指定が使えない…と書いたけど、実はfilterメソッドは存在していて、それを使うことで自分自身のスナップショットのみを取得することができることがあとで分かった。

下記のようにすると、自分自身のスナップショットと、パブリックなスナップショットの両方が取得できてしまう。

# スナップショットの一覧を確認する(自分のものとパブリックのもの)
ec2.snapshots.each do |s|
  print "#{s.id}, #{s.description}\n"
end

自分のスナップショットだけを取得するには、次のようにする。

# スナップショットの一覧を確認する(自分のものだけ)
ec2.snapshots.filter('owner-id', 'YOUR_ACCOUNT_NUMBER').each do |s|
  print "#{s.id}, #{s.description}\n"
end

AWS SDK for Rubyのドキュメントには、特に記載がなかったので気がつかなかっのだけど、filterというメソッドがあり、そこにフィルタする条件を指定できるらしい。

上記のコードでは、条件としてowner-idに自分のアカウント番号である12桁の数字を指定することで、自分自身のスナップショットのみを取得できた。

なお、スナップショットの取得で使用できるfilterの条件は、EC2のAPIリファレンスの、DescribeSnapshotsが参考になる。