AWS SDK for RubyでEC2インスタンスのバックアップ(AMI)を作成するスクリプト
こんにちは。
少し時間がたってしまいましたが、先日AWS Summitに参加してきました。
2日目のCDPセッションにて玉川さんが【クラウドで実行させるスクリプトは再利用性がとても大事】というお話をしていました。
例えばEC2インスタンスのバックアップ(スナップショット)をするときに、インスタンスIDなどをベタ書きするよりもmeta-dataから取得したり、バックアップ世代の設定もタグで取得出来るようにしたほうが再利用性が高くなるという事でした。
もちろん、アクセスキーIDやシークレットキーもIAM Roleを使ってインスタンス内に設定しなくても実行出来るようにするべきです。
というわけで私もそのようなスクリプトのサンプルを書いてみる事にしました。
スクリプト概要
EC2インスタンスでスクリプトを実行すると自分自身のバックアップ(AMIの作成)を取得します。
インスタンスIDやリージョンはmeta-dataから取得して、バックアップ設定はEC2インスタンスのタグから取得します。
タグには以下のような設定をする事が前提となっており、タグが正しく設定されていない場合は終了するようにしています。
タグの名前 | 値 | 備考 |
backup | on | バックアップする場合は値にonを入れる |
generation | 5 | バックアップの世代数を数字で入力する |
スクリプト
こんな感じのスクリプトとなっており、cronへ登録して使います。
meta-dataからはAZは取得出来ますが、Regionは取得出来なかったので少し強引な設定をしました。