🐷

「スナップショット」と「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を作って環境を複製」「スナップショットを定期的に取ってバックアップ」といった組み合わせで使うケースが多いです。

参考

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/backup-recovery/ec2-backup.html

Discussion