« VPC Peeringの使いどころとTips等々 | メイン | ELBのSSL証明書更新の方法 »

AWSトレーニングでよくいただくご質問シリーズ - 第一回 Amazon Machine Image (AMI) とスナップショットの違い

AWSテクニカルトレーナーの仁平です。

AWSトレーニングで良くいただくご質問を出来ましたら定期的に取り上げていきたいと思います。記念すべき第一回目は Amazon EC2 について学習する際に必ずいただくご質問を取り上げたいと思います。

「Amazon Machine Image (AMI) とスナップショットは何が違うのか?」

EBS ボリュームそのものからデータのコピーを取得し S3 上に保管したものをスナップショットと呼びます。スナップショットには AMI のようなインスタンスを構成するための管理情報は含まれていません。スナップショットの中のデータを利用する場合には、基本的にそのスナップショットを元に EBS ボリュームを作成することになります。

また、こちらのドキュメントを参考にしてスナップショットから AMI を作成することもできますが、以下のような課題があるので注意が必要です。

  • アーキテクチャやカーネルの選択を誤ると正しく起動してこなかったり、動作が不安定な AMI が出来る可能性がある
  • 有償の AMI (例: WindowsのAMI) などの場合、スナップショットから AMI を作成しても必要な管理情報が抜け落ちてしまい、うまく起動できないことがある

ここまでの話を整理しますと、以下のように言えるかと思います。

スナップショット = 「EBS ボリュームの中のデータ」を特定のタイミングで取得しS3に保存したもの

AMI  = 「EBS ボリュームの中のデータ(スナップショット) とインスタンスを構成する管理情報」を含む起動テンプレート

図でそれぞれの関係性を示すと以下のような形になります。以下の図はAWS マイスターシリーズの EBS の回からお借りしてきました。

プレゼンテーション1

また AMI は起動ボリューム(ルートデバイスとも言います)の種類によって大きく二種類に分けられます。それについてお話しするには Amazon EC2 の歴史の授業になってしまいますが、ちょっとだけお付き合いください。

Amazon EC2 のサービス開始当初 (2006 年後半頃) は、すべての AMI が「Amazon EC2 インスタンスストア backed」でした。このタイプのAMI から起動されるインスタンスの起動ボリュームは、インスタンスが稼働する仮想サーバホストのローカルストレージでした。Amazon S3 に格納されたテンプレートをローカルストレージに読み込んで利用するインスタンスです。このローカルストレージは呼び方が複数あり、インスタンスストアと呼ばれたりインスタンスストレージと呼ばれたりエフェメラルストレージと呼ばれることがありますが、基本的には同じものとなります。

しかし 2009 年後半頃から  Amazon Elastic Block Store (EBS) を基にした AMI も出てきました。つまり、AMI から起動されるインスタンスの起動ボリュームが EBS ボリュームである 「EBS backed」タイプの AMI です。

この AMI は起動が高速であり、起動ボリュームとして永続的ストレージを使用しているので、通常の場合 「EBS backed」タイプの AMI を利用することをお勧めしています。 「EBS backed」タイプの AMI は内部的に EBS スナップショットを内包していますが、それ以外にインスタンスにアタッチされたボリュームのデータだけでなく起動ボリュームのサイズはいくつか、他にストレージがアタッチされているかなどのインスタンスを構成するための管理情報がプラスアルファで含まれています。

以下の図で EBS-backed AMI と インスタンスストア backed AMI について比較していますので、ぜひ参考にしてください。 

Image 1

 以上「Amazon Machine Image (AMI) とスナップショットは何が違うのか?」 というテーマで書かせていただきましたが如何でしょうか。初めてこのようなブログを書いたためなかなか良いまとめの文章が思い浮かばずちょっと苦戦しました。

ソリューションアーキテクトの片山に相談したところ「卒業とかけて人生のスナップショットという話を書くといいよと」アドバイスをいただきましたが、そういった話を出してオチをつけられそうにもないので、今回はこのような形で終了とさせていただきたいと思います。

 [参考文献]

[AWSマイスターシリーズ] Elastic Block Store(EBS)

http://www.slideshare.net/AmazonWebServicesJapan/aws-16148274

ルートボリュームから AMI を作成する方法

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html#Using_LaunchingInstanceFromSnapshot

AMI の基本情報

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ComponentsAMIs.html

 

コメント

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

2017年10 月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31