EC2でのバックアップ方法まとめ!スナップショット・AMI・自動化まで対応
生徒
「EC2で運用しているサーバーのバックアップって、どうやるんですか?万が一のためにコピーを取っておきたいんですが…」
先生
「EC2インスタンスのバックアップには、主にスナップショットとAMIを使います。また、これらを自動化する方法もありますよ。」
生徒
「スナップショットとAMIって、どう違うんですか?」
先生
「それでは、EC2バックアップの基本から、違い、自動化のやり方まで順番に見ていきましょう!」
1. EC2インスタンスのバックアップとは?
AWS EC2で運用しているサーバーは、障害や操作ミスによるデータ損失に備えて定期的にバックアップすることが重要です。
EC2のバックアップには、主に以下の方法があります。
- スナップショット(EBSボリュームのコピー)
- AMI(Amazon Machine Image)によるインスタンス全体のイメージ作成
- バックアップの自動化(EventBridge + Lambdaなど)
用途やタイミングによって使い分けることで、運用効率と安全性の両方を確保できます。
2. EBSスナップショットでバックアップ
スナップショットは、EC2のルートボリューム(EBS)や追加ボリュームの状態を丸ごと保存する機能です。 ストレージ単位のバックアップとして使われ、柔軟な運用が可能です。
手動でスナップショットを取得する手順:
- EC2インスタンスの「説明」からボリュームIDを確認
- EBSセクションの「ボリューム」→対象のボリュームを選択
- 「アクション」→「スナップショットを作成」を選択
- 任意の名前・説明を入力して作成
スナップショットから新しいEBSを作成し、既存インスタンスにアタッチすることで、部分的なデータ復元が可能です。
3. AMIでインスタンス全体をバックアップ
AMI(Amazon Machine Image)は、EC2インスタンスのOS・設定・インストール済みアプリケーションなどを含めた完全なイメージです。 インスタンス全体を再作成したい場合に非常に便利です。
AMI作成手順:
- EC2インスタンスを選択
- 「アクション」→「イメージとテンプレート」→「イメージの作成」
- 名前・説明を入力して作成
AMIから新しいEC2インスタンスを起動すれば、構成やデータをそのまま再現できます。 テスト環境や予備サーバーとして活用することも可能です。
4. バックアップの自動化(EventBridge + Lambda)
毎回手動でスナップショットやAMIを作成するのは手間がかかります。
そこで活用したいのが、EventBridge(旧CloudWatch Events)とAWS Lambdaを使った自動化です。
自動化の一般的な手順:
- Lambda関数でスナップショットやAMI作成処理を記述
- IAMロールを設定して、EC2やEBSへの権限を与える
- EventBridgeでスケジュール(毎日1回など)を設定し、Lambda関数をトリガー
この方法により、定期的なバックアップを人手なしで継続的に実行できます。運用の自動化は、可用性と保守性の向上に大きく貢献します。
5. EC2バックアップに関するよくある質問
Q. スナップショットはどこに保存されるの?
A. スナップショットは、Amazon S3上に非公開で自動保存され、リージョン内でのみ利用可能です。
Q. スナップショットとAMIの違いは?
A. スナップショットはEBSのバックアップのみ、AMIはインスタンス構成全体のバックアップに使います。
Q. バックアップの保存コストはどれくらい?
A. 保存容量に応じて課金されます。古いスナップショットは削除することでコスト削減が可能です。
Q. バックアップから復元するには?
A. スナップショットから新しいボリュームを作成しインスタンスにアタッチするか、AMIから新しいEC2を起動します。
6. まとめ
AWS EC2でのバックアップは、システムの安定運用と障害対策のために欠かせない作業です。今回の記事では、スナップショット・AMI・バックアップの自動化という3つの重要なバックアップ方法を紹介しました。
EBSスナップショットは、ボリューム単位で柔軟にバックアップできるため、ファイル単位の復旧や特定のデータだけを復元したいときに便利です。スナップショットはAmazon S3上に保存され、自動的に差分のみを保持するため、ストレージコストの最適化にもつながります。
一方で、AMI(Amazon Machine Image)は、OS・ミドルウェア・アプリケーション・データを含んだインスタンス全体の複製です。サーバー全体をまるごと復元したり、テスト環境や予備環境の構築にも役立ちます。
さらに、EventBridgeとLambdaを使えば、毎日のバックアップ作業を自動化できます。以下は、Lambda関数でAMIを作成するPython(Boto3)コードの一例です。
import boto3
import datetime
ec2 = boto3.client('ec2')
def lambda_handler(event, context):
now = datetime.datetime.utcnow()
image_name = 'daily-backup-' + now.strftime('%Y-%m-%d-%H-%M')
ec2.create_image(
InstanceId='i-xxxxxxxxxxxxxxxxx',
Name=image_name,
Description='Daily AMI backup',
NoReboot=True
)
上記のように自動AMI作成処理をLambdaで定義し、EventBridgeでスケジュール実行すれば、毎日自動でバックアップが取れる安全な環境が構築できます。
AWSでは、バックアップは設計段階から考慮すべき重要な運用設計の一部です。障害に強いインフラを構築するためにも、日々のスナップショット取得や定期的なAMI作成、自動化の導入を実践していきましょう。
生徒
「スナップショットとAMIの違いがよくわかりました!用途によって使い分けるのがポイントなんですね。」
先生
「その通りです。スナップショットはボリューム単位、AMIはインスタンス全体のバックアップに向いています。」
生徒
「自動バックアップも便利そうですね。LambdaとEventBridgeを組み合わせれば、手間をかけずに運用できそうです。」
先生
「自動化は保守性を上げるだけでなく、うっかりミスも防げます。スケジュールを決めて忘れずにバックアップを続けましょう。」
生徒
「バックアップコストも気になりますが、古いスナップショットを削除すればある程度抑えられるんですね。」
先生
「はい、スナップショットやAMIの整理も大切な運用のひとつです。今日学んだ知識を活かして、強いAWSインフラを作っていきましょう。」