AWSのAMI(Amazon マシンイメージ)についてまとめています。
AWS AMIは、インスタンス起動用の仮想マシンイメージ
Amazon マシンイメージ (AMI) とは、インスタンス起動用の仮想マシンのイメージです。同じ設定で複数のインスタンスを立ち上げたい場合に、AMIを利用すると便利なんですね。インスタンスをそれぞれ異なる設定のAMIから起動することも可能です。
関連)Amazon マシンイメージ (AMI) – Amazon Elastic Compute Cloud
AMIには以下が含まれています。ストレージ領域のスナップショットに加え、管理情報がセットになっているんですね。
- Amazon Elastic Block Store (Amazon EBS) スナップショット、または、instance-store-backed AMI、インスタンスのルートボリュームのテンプレート (オペレーティングシステム、アプリケーションサーバー、アプリケーションなど)
- AWS アカウントが AMI を使用してインスタンスを起動可能にするための起動許可
- インスタンスの起動時にアタッチするボリュームを指定するブロックデバイスマッピング
AWS AMIとスナップショットの違い
AMIとスナップショットは何が違うのでしょうか?
スナップショットは、AmazonのEBSボリュームのデータのコピーをS3上に保管したもので、インスタンスを構成するための管理情報は含まれません。スナップショットからインスタンスを起動するには、スナップショットをもとにEBSボリュームを作成して管理情報を設定する必要があるんですね。Windowsのような有償のOSの場合、スナップショットを取得しても必要な管理情報が抜け落ちてしまい起動できないこともあります。
スナップショットはあくまでバックアップ・リストア用のデータと考えると良いでしょう。スナップショットを利用してインスタンスを構成することは可能なものの、スナップショットから複数のインスタンスをポン、と起動させることはできないんですね。
対してAMIは、仮想マシンのイメージに加えてインスタンス起動用の管理情報が含まれているため、容易にインスタンスを起動できます。
関連)AWS Solutions Architect ブログ: AWSトレーニングでよくいただくご質問シリーズ – 第一回 Amazon Machine Image (AMI) とスナップショットの違い
AWS AMIの料金
AMIを作成するのに料金はかかりませんが、AMIを保管料がかかります。AMIの保管料は、Amazon EBSスナップショットの料金として請求されます。
公式サイトによると、EBSスナップショットの料金は1 か月に格納されたデータ 1 GB あたり 0.055USD。30GB程度のAMIなら月に1.65ドルとなります。AMIは生データではなく圧縮されて保存されるため、元データが30GBでもかなり小さくなる可能性があります。
スナップショットストレージの基盤になるのは、データを Amazon S3 で保存するのに使用された領域の大きさです。Amazon EBS では空のブロックが保存されないため、スナップショットのサイズはボリュームサイズよりもかなり少なくなるはずです。ボリュームの最初のスナップショットについては、データ全体のコピーが Amazon S3 に保存されます。増分スナップショットごとに、Amazon EBS ボリュームの変更部分のみが保存されます。
引用:Amazon EBS の価格 – アマゾン ウェブ サービス
なお、保管領域にかかる料金とは別に、AWS Marketplaceには、有料のAMIが販売されているんですね。有料AMIを使ってインスタンスを立ち上げた場合、AMIの所有者が設定した料金とインスタンスの時間料金がかかります。
関連)有料 AMI – Amazon Elastic Compute Cloud
また、有用なAMIを作成して、AWS Marketplaceで販売することも可能です。
AWS Marketplaceには、バックアップやデータ移行、OSやネットワーク、セキュリティなどのインフラソフトウェア、DevOps、ビジネスアプリ、機械学習、データ製品、IoTなどのソフトウェアソリューションがAMI形式で販売されています。(LinuxやWindowsのOSなど、利用料金無料のAMIもダウンロード可能です)
AMIごとの詳細ページに、Pricing(料金)の項目があります。実際に有料で販売されているAMIの詳細ページを見てみましょう。以下は、ウイルス対策のTrend Micro Cloud Oneの料金ページです。
かなり複雑な料金体系です。
ワークロード:Micro-Med EC2インスタンス、WorkSpace、その他のクラウド1 vCPU / Hrごと $ 0.01 /ユニット
ワークロード:ラージEC2インスタンスごと、その他のクラウド2 vCPU / Hr $ 0.03 /ユニット
ワークロード:XLおよびより大きなEC2インスタンスごと、その他のクラウド4+ vCPU / Hr $ 0.045 /ユニット
ネットワーク:検査されたギガバイト(GB)あたり $ 0.013 /ユニット
:
:
このソフトウェアは仮想CPU時間ごと、検査されたネットワーク上のデータ量、などにより料金が決まる価格設定ですね。なお、料金は税金は含まれていません。シンプルな価格体系のものは詳細ページの右上に想定されるインスタンス料金と合わせた概算料金が表示されるのですが、複雑な料金体系のプロダクトでは概算表示がされないようです。
このような場合は、販売者に価格情報について問い合わせ、要件に対する概算見積もりをしてもらうのが良いでしょう。
AWS AMIの作成
AMIはどのように作成できるのでしょうか?
Amazon EC2 Instances (Amazon EC2 インスタンス)ビューで、インスタンスからAMIを作成することができます。インスタンスは実行中でも停止中でもかまいません。
関連)Amazon EC2 インスタンスからの AMI の作成 – AWS Toolkit for Visual Studio
デフォルトの動作では、Amazon EC2はインスタンスをシャットダウンしてからスナップショットを取得し、AMIを作成します。オプションでNo Reboot(再起動しない)を選ぶことができますが、その場合はファイルシステムの整合性が保証されません。実行中のマシンイメージのある瞬間をAMI化することになるんですね。
実際にNo RebootでAMIを作成した人によると、作成したはずのファイルが消えるなどの現象が起こったそうです。
参考)No RebootでAMIを作成したらファイルが消えたりした – Qiita
AWS AMIのまとめ
- AWS AMI(Amazon マシンイメージ)は、インスタンス起動用の管理情報を含む仮想マシンのイメージデータ
- AMI作成の料金は無料だが、AMIの保管料金とスナップショット使用料金がかかる
- AMIは実行中または停止中のインスタンスから作成できる