EC2のAMI作成について不勉強だったこと(S3-Based AMIとEBS-Backed AMI)

私はEC2の操作を基本的に管理コンソール画面からおこなっていました。そのため、AMIの作成について深く理解していませんでした。リージョンを変更する際に色々とはまったためAMIについて自分が調べた事を記録しておきます。

理解に誤りなどありましたらすいません。コメントでご指摘頂けると助かります。

管理コンソール画面から無意識に作成していたEBS-Backed AMI

私はAMIの作成は管理コンソール画面よりCreate Image(EBS AMI)よりおこなっており、それがEBS-Backed AMIを作成しているということを意識していませんでした。作成したAMIはS3のどこかにあるのだろうというぐらいの感覚でした。

AMIにはS3-Based AMIとEBS-Backed AMIがある

root deviceがebsかinstance-storeであるかという点は理解して使い分けていたのですが、AMIのイメージをどこに配置するか(どこにあるイメージを使用するか)という点は意識できていませんでした。
EC2のUser GuideやDeveloper Guideをみると、確かにS3-Based AMIとEBS-Backed AMIに関する記述がありますね。

S3-Based AMI

イメージファイルをS3上に配置して利用するタイプのAMIのようです。
AMI作成の手順的には、ec2-bundle-volコマンドでイメージファイルを作成し、ec2-upload-bundleコマンドでS3にアップして、その後AMI登録といった感じでした。
ファイルは、細かく分割されたイメージファイルとmanifestファイルとなります。ec2-bundle-volコマンドを実行することでイメージファイルとmanifestファイルが確認できます。

EBS-Backed AMI

ストレージ用のデバイスにEBS(スナップショット)を使用するタイプのAMIのようです。そのため、EBSにはイメージのデータがそのまま格納されます。
AMI作成の手順的には、ec2-bundle-volコマンドでイメージを作成して、ec2-unbundleコマンドで一つにまとめて、アタッチしておいたEBSにddコマンドでコピーし、EBSのスナップショットを作成してそれを指定してAMIとして登録といった感じでした。他にもやりかたはあるっぽいですね。それらしい記述を見た気がします。

コマンドを実行して試してみると理解できるものですね

結局私は、リージョンを変更する際にAMIの作成やS3へのアップなどを繰返しおこなうことで、色々と学ぶことができました。やはり、コマンドを実行して試すことが重要なのだと実感しました。管理コンソール画面にばかり頼っていると良くないってことですね。