🐷
「スナップショット」と「AMI」の違い
はじめに
AWSを使っていると必ず耳にするのが スナップショット と AMI (Amazon Machine Image)。
どちらも「コピーをとる仕組み」ですが、役割が微妙に違うので混乱しやすいポイントです。今回はその違いを整理してみます。
スナップショットとは?
スナップショットは EBSボリューム(ディスク)のバックアップ です。
対象: EBSボリューム
保存先: S3(ただしユーザーが直接参照することはない)
用途:データのバックアップ、別のEBSボリュームの作成元、災害復旧 など
つまり「ディスクの中身を保存しておく仕組み」ですね。
ただしスナップショット単体ではOSをブートできないので、そのままではEC2インスタンスを起動できません。
AMIとは?
一方でAMIは EC2インスタンスを起動するためのテンプレート です。
対象: EC2インスタンス全体
含まれるもの:OSや設定済みソフトウェア、ルートボリューム(内部的にはEBSスナップショットを利用)
用途:新しいEC2インスタンスをすぐに立ち上げる、同じ構成を複数台に展開する など
AMIはスナップショットを裏で利用しているので、「EC2を起動できるレベルまで仕上げたスナップショット集」とイメージするとわかりやすいです。
なので、スナップショットは、ディスクのコピー、AMIは、サーバー丸ごとのコピー(起動可能なテンプレート)だと思います。
使い分けのイメージとしては、下記の通り。
- データをバックアップしたい → スナップショット
- サーバー構成をそのまま複製したい → AMI
例えば「毎日DBのバックアップを取りたい」ならスナップショット。「アプリサーバーを水平展開したい」ならAMIが適しています。
まとめ
それぞれの違いをまとめると、下記の通りです。
- スナップショットは「EBSのバックアップ」
- AMIは「インスタンス起動用のテンプレート」
- AMIの裏ではスナップショットが使われている
運用の中では「AMIを作って環境を複製」「スナップショットを定期的に取ってバックアップ」といった組み合わせで使うケースが多いです。
参考
Discussion