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へのアップなどを繰返しおこなうことで、色々と学ぶことができました。やはり、コマンドを実行して試すことが重要なのだと実感しました。管理コンソール画面にばかり頼っていると良くないってことですね。