funasaki memo

このブログ上の投稿は個人のものであり、所属する企業を代表する投稿ではありません。所属:AWSのSolutions Architect

EBS Snapshot Copyしたものを使ってAMIを作成、起動してみる

前回のの「EBS Snapshot Copyを使ってみる」の応用で、リージョン間でコピーしたSnapshotを利用して新たにAMIを作成、起動してみました。本来であれば、こちらのページにありますように、リージョン間のAMIコピー機能がリリースされるとのことなので、それを待ってから使う方が良いかと思っていますが、取り急ぎEBS Snapshot Copy機能で出来るかどうか試してみました。

結果としては、リージョン間でコピーしたSnapshotをベースに、カスタマイズしたAmazon Linux 2012.09 のAMIを新しいリージョンで作成、起動することができました。

注意事項としては、異なるリージョンでは使用されるKernel IDが異なるため、正しいKernel IDを指定する必要があることです。

その時に試した方法が以下です。

1.Tokyo リージョンでAmazon Linux 2012.09 を起動。
2.起動後、Apache HTTP Server をインストール

sudo yum install httpd

3.インストール後、Tokyoリージョン内でAMI 作成
4.作成したAMIに含まれているSnapshot の ID を確認、そのSnapshotをSingaporeリージョンにコピーする。
Management Consoleで、該当するAMIの情報を確認すると、Snapshot IDを確認できます。
f:id:kenjifunasaki:20121225181501p:plain

このSnapshotをSingaoreリージョンにコピーします。
f:id:kenjifunasaki:20121225181538p:plain

コピーが開始され、進行中の状態だと以下のように表示されます。
f:id:kenjifunasaki:20121225181617p:plain

コピーが完了されるまで待ちます。


5.SingaporeリージョンにコピーされたSnapshotを元に新たなAMIを作成する
コピーが無事完了後、該当するSnapshotを選択して、create Image from Snapshotを実行します。
f:id:kenjifunasaki:20121225181822p:plain

作成ウィンドウが以下のように表示されます。ここでアーキテクチャx86_64を選択、Kernel ID や Ramdisk ID は Use Defaultを選択しました。
f:id:kenjifunasaki:20121225182053p:plain

Yes, Create ボタンをクリックすると、AMI 作成が開始され、以下のようなウィンドウが表示されました。
f:id:kenjifunasaki:20121225182152p:plain

これで新しいAMIのIDが分かりますね。

作成が完了すると、以下のように表示されます。
f:id:kenjifunasaki:20121225182302p:plain


6.作成したAMIを起動する。
作成したAMIを選択して起動してみます。基本的にはいつもの起動方法と同じなのですが、1点、Kernel IDを指定しない場合には起動に失敗してしまうことがあるようです。以下の起動設定時に、Kernel IDをUse Defaultにして起動すると、起動処理は開始されるのですが、途中のStatus CheckでErrorとなります。
f:id:kenjifunasaki:20121225183404p:plain

Instance / System Reacheability Check で Error となるようです。その時の起動ログをManagement Console上で見てみると、

md: autorun ...

md: ... autorun DONE.

EXT3-fs: sda1: couldn't mount because of unsupported optional features (240).

EXT2-fs: sda1: couldn't mount because of unsupported optional features (240).

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)

とKernel panicが起きていました。
今回の場合は、Kernel IDを明示的に指定する必要があるようです。Singaporeリージョンで同じバージョンのAmazon Linuxを起動するときに、どのKernel IDを使用しているか?を確認、そのKernel IDを指定して起動すると、無事インスタンスに接続できました。
f:id:kenjifunasaki:20121225183545p:plain

今回は、Singaporeリージョン内では aki-fe1354ac を指定すると、起動できました。

最後に
今回の方法で、Amazon Linux 2012.09では、Copy Snapshot機能を使って、別のリージョン内にSnapshotをコピー、それをベースにAMIを作成することができました。
他のOSの場合でも、例えばMarket Placeで取得できるSnapshotの場合でも、コピー先のリージョンでサポートされていれば、コピー自体は可能なようですね。

リンク
http://aws.typepad.com/aws_japan/2012/12/ebs-snapshot-copy-between-regions.html