Quitada ブログ HAX

Hatena Blog でも Quitada ブログ

Amazon S3 にカスタマイズした AMI を保存して同 EC2 に登録してみた

昨日、Amazon EC2 上で Windows Server 2003 の AMI を起動して、カスタマイズしてみたわけですが、このままシャットダウンしたり、不慮の障害で逝ってしまった場合は、カスタマイズした内容ともども消えてしまうので、本日は Amazon S3 に保存して同 EC2 に登録してみました。

ポイントは、保存する AMI が Windows ということです。ネットで調べてみたり本で調べてみると、どうも Linux の例ばかりなんですよね。

AmazonEC2/S3クラウド入門

AmazonEC2/S3クラウド入門

ちなみに、保存対象 AMI が Linux の場合、Amazon S3 にカスタマイズした AMI をアップロードするには、各インスタンスssh でログオンして、インスタンス内で ec2-bundle-vol コマンドを実行してインスタンス内のディスク(あるいは、マウント済みの Amazon EBS とか)にイメージを作成、さらに ec2-upload-bundle コマンドで Amazon S3 にアップロードするようで。若干、めんどい。で、Windowsssh が標準でないので、リモートデスクトップでログオンして同様の手順を試してみましたが、そもそも ec2-bundle-vol とか ec2-upload-bundle とかいうコマンドがないんですよね、Windows で動かせそうなもので。

#なお、ec2-bundle-volec2-upload-bundle の実体は Ruby で書かれているようで。

とりあえず、Amazon EC2 API Tools という Java ベースのコマンドラインツールを自分の PC にダウンロードしてみて、コマンド一覧をみたらそれらしいコマンドを発見、いろいろ調べてみると、Windows の場合はわざわざインスタンスにログオンしなくても、自分の PC 上で以下のようなコマンドを実行すると S3 に保存できるようで。

ec2-bundle-instance [Instance ID] -b [S3 に作るディレクトリ名] -p [AMIファイル名のプリフィックス] -o [AWS Access Key] -w [AWS Secret Access Key]

なお、Instance ID は Elasticfox の Instance タブから見られるもの、S3 に作ったディレクトリ名は Amazon EC2 の登録用に使われていない任意の名前(実質 AMI の保存先となる)、AMI ファイル名のプリフィックスは保存時イメージファイル名の先頭部分、AWS Access Key/Secret Access Key は Elasticfox で起動時に指定したものです。

Linux みたく、いちいち各インスタンスのディスクに一時的に保存しなくて S3 にダイレクト保存できるので楽ちんプーです。で、ec2-bundle-instance コマンドに関して Amazon EC2 の開発者サイトを見てみると、Windows 専用コマンドであり、制約として C ドライブしか保存してくれないようです。Windows の public AMI は、C ドライブと D ドライブ分けてあるので、きちんと保存したい内容やアプリケーションは C ドライブにおいておく必要があるということでちょっと注意。

#なんといって、私がはまったので。D ドライブの方がディスク容量が多かったので。とほほ。マニュアルはきちんと読みましょう。

で、ec2-bundle-instance コマンドを実行すると、すぐにプロンプトが返ってきます。ま、バックエンドで保存処理しているようで、処理の進行度合いは以下のコマンドで確認できます。

ec2-describe-bundle-tasks

今回試した限りでは、15 分ほどで終了しました(まー、保存する量によると思いますけど)。

#なお、保存処理中はインスタンスがシャットダウンされていて、保存処理が終わったら自動的に再起動されるようです。

Amazon S3 に保存した AMI を Amazon EC2 に登録するには、以下のコマンドを使います。

ec2-register [S3 に作ったディレクトリ名]/[プリフィックス].manifest.xml

なお、S3 に作ったディレクトリ名とかプリフィックスは、ec2-bundle-instance コマンドで指定したものを使います。

ちなみに、ec2-describe-bundle-tasksec2-register 相当のことは Elasticfox の Bundle Tasks からもできるようです。

さらにちなみに、Amazon S3 に保存した AMI の内容は、S3Fox というこれまた FireFox ベースの GUI ツールで確認できます(ま、このツールの本来の目的は、自分の PC と Amazon S3 間のファイル転送ツールって感じですけど)。

さて、とりあえずひととおり Amazon EC2 弄りはひと段落ついたので、機会を見て Amazon Elastic MapReduce を試してみたい今日この頃。

P.S. 今回の 2 日間の Amazon EC2/S3 評価でかかった費用: 16 ドルほど