2011年12月23日

VB.NETでAmazon EC2のEBSスナップショットを自動化する

Amazon EC2のEBSスナップショットをWindows環境で自動化する必要に迫られた。

スナップショットを取るだけならEC2のコマンドラインツールですぐに出来るけれども、際限なくスナップショットが増えてしまうのは困る。

そこで古いスナップショットを自動で削除しつつ新しいスナップショットを作成してくれるツールが必要になる。

Rubyスクリプトはいくつか見つけた。
code.rock: Amazon EBSとRightAwsを使って自動バックアップ環境を構築する

実践で使えるEBSスナップショット取得スクリプト - よかろうもん!

EBSのスナップショットを定期的に作成するスクリプト - こせきの技術日記

oko_changのインフラ日誌: EBSボリュームのスナップショットを自動作成する(right_aws)

シェルスクリプトもあった。
Amazon EBSのスナップショット(バックアップ)を取得しつつ世代管理も行うスクリプト - RX-7乗りの適当な日々

Pythonスクリプトもあった。
AmazonEC2/S3の便利スクリプトのまとめ | スターワン::ブログ


でもそれだけのためにRubyやPythonをインストールしたり、Cygwinをセットアップしたりするのはちょっと避けたかった。


クラウド管理用のWebサービスも試して見た。

RightScaleCloudWorks など。

RightScaleはUIが複雑過ぎて断念。CloudWorksは無料版だと世代管理は出来なさそう。


要件を満たすものがなかなか見つからないので、結局 AWS SDK for .NET を使って自分で作ってみる事にした。
Ec2EbsSnap - GitHub

実行可能ファイルはこちら (.NET Framework 3.5以上が必要)