はじめに
Amazon Lightsail(以下 Lightsail)で WordPress を運用していると、何らかの理由でインスタンスが破損したり、データを失ったりすることがあります。そのような緊急時に活躍するのがスナップショットです。
本記事では、Lightsail のスナップショット機能を活用して、WordPress インスタンスを効率的に復旧する方法を、実際のコマンドとともに解説します。
Lightsail packaged WordPress blueprint を前提にしています。
Bitnami packaged WordPress を利用している場合は、SSH ユーザー名や WordPress の配置パスが異なるため、適宜読み替えてください。
対象読者
- AWS Lightsail で WordPress を運用している方
- バックアップ戦略を検討中の方
- 災害復旧(DR)手順を整備したい方
- AWS CLI の基本的な使用経験がある方
スナップショットとは
スナップショットとは、特定の時点における Lightsail インスタンスのディスク内容を復元するためのバックアップです。
インスタンスのディスク内容を丸ごと保存するため、以下のデータが全て含まれます。
- OS(Linux/Ubuntu)
- WordPress アプリケーション
- WordPress データベース(MySQL)
- メディアライブラリ(アップロード画像など)
- プラグイン・テーマ設定
- システム設定
スナップショットから新しいインスタンスを作成すると、スナップショット作成時点の状態がそのまま復元されます。
ただし、スタティック IP、DNS、CDN、ロードバランサー、タグなど、周辺リソースの設定は必要に応じて別途確認・再設定します。
スナップショットの種類
Lightsail のスナップショットには、2つの種類があります。
1. Automatic Snapshot(自動スナップショット)
| 項目 | 内容 |
|---|---|
| 作成方法 | 自動(AutoSnapshot アドオン有効時) |
| 実行時間 | 毎日指定時刻(例:18:00 UTC) |
| 保持期間 | 直近 7 日分 |
| 表示場所 | インスタンス詳細 → Snapshots タブ |
| API 対応 | 対応あり(コンソール推奨) |
| 復旧難度 | ⭐ 簡単(コンソールから直接) |
特徴:
- セットアンドフォーゲット(設定後は自動実行)
- ディスク容量を効率的に使用(直近 7 日分のみ保持)
- 定期的なバックアップが必要な場合に最適
2. Instance Snapshot(手動スナップショット)
| 項目 | 内容 |
|---|---|
| 作成方法 | 手動(CLI またはコンソール) |
| 実行時間 | 任意のタイミング |
| 保持期間 | 無制限 |
| 表示場所 | 左メニュー → Snapshots |
| API 対応 | 完全対応 |
| 復旧難度 | ⭐⭐ 中程度(CLI 推奨) |
特徴:
- 重要な変更前の手動バックアップに最適
- AWS CLI で完全に操作可能
- ディスク容量は保持期間に応じて増加
スナップショットの特性とメリット・デメリット
| 比較項目 | Automatic Snapshot | Instance Snapshot |
|---|---|---|
| 自動実行 | ✅ あり(毎日定時) | ❌ 手動のみ |
| 保持期間 | ⏱️ 7 日間(固定) | ♾️ 無制限 |
| 保持個数 | 📊 直近 7 個 | 📊 無制限 |
| ディスク容量消費 | 💾 効率的(7 日分) | 💾 増加し続ける |
| 復旧方法 | 🖱️ コンソールでも CLI でも可能 | 🖥️ CLI 推奨 |
| AWS CLI 対応 | ✅ 対応あり | ✅ 完全対応 |
| 追加費用 | ✅ 保存容量に応じたスナップショットストレージ料金が発生 | ⚠️ 長期保持で増加 |
| 使用シーン | 📅 日常的なバックアップ | 🎯 重要な変更前 |
| 復旧難度 | ⭐ 簡単 | ⭐⭐ 中程度 |
| 自動化対応 | ✅ 可能 | ✅ 容易 |
メリット・デメリット詳細
Automatic Snapshot
メリット:
- ✅ 自動実行のため手間がない
- ✅ セットアンドフォーゲット(放置で動作)
- ✅ 毎日の変更内容が保存される
- ✅ AutoSnapshot アドオンの有効化自体は無料ですが、保存されている自動スナップショットの容量に対してスナップショットストレージ料金が発生します。
- ✅ コンソールから簡単に復旧可能
デメリット:
- ❌ 保持期間が 7 日に限定
- ❌ 長期保存が不可
- ❌ 8 日以上前のバージョンに戻せない
- ❌ 復旧の完全自動化が困難
- ❌ インスタンス削除時に自動スナップショットも削除されます。
※ 自動スナップショットを長期保存したい場合は、手動スナップショットとしてコピーして保持してください。
Instance Snapshot
メリット:
- ✅ AWS CLI で完全制御可能
- ✅ 無制限に保持可能
- ✅ 復旧の自動化が容易
- ✅ バージョン管理に最適
- ✅ 任意のタイミングで作成可能
- ✅ Lambda + EventBridge で定期実行も可能
デメリット:
- ❌ 手動実行が必要(または自動化スクリプト必須)
- ❌ ディスク容量を消費し続ける
- ❌ 長期保持は追加費用が発生
- ❌ スナップショットライフサイクル管理が必要
復旧手順
方法1: Automatic Snapshot(自動スナップショット)からの復旧
ステップ1: コンソールからの復旧
- AWS 管理コンソールを開く
- Lightsail を選択
- 左メニュー → Instances → インスタンス名(WordPressInstance) をクリック
-
Snapshots タブをクリック
-
Automatic Snapshots セクション内のスナップショットを選択
- スナップショット右の ⋮(メニュー) → Create a new instance をクリック
ステップ2: インスタンス設定確認
インスタンス名(WordPressInstance-Restored)を入力しCreate instance をクリック

必要に応じて、Availability Zone やインスタンスタイプの変更などを行ってください。
ステップ3: インスタンス起動確認
左メニュー → Instances で新しいインスタンスが running 状態になるまで待機(3~5 分)

ステップ4: スタティック IP 再割り当て(CLI)
注意: CLI コマンド内のプレースホルダー([スタティック IP 名]など)は指定した情報に置き換えてください。
- デタッチします
aws lightsail detach-static-ip \
--static-ip-name [スタティック IP 名] \
--region ap-northeast-1
- アタッチします
aws lightsail attach-static-ip \
--static-ip-name [スタティック IP 名] \
--instance-name [アタッチするインスタンス] \
--region ap-northeast-1
- 再割り当てを確認します
aws lightsail get-static-ip \
--static-ip-name [スタティック IP 名] \
--region ap-northeast-1 \
--query "staticIp.attachedTo" \
--output text
実行結果で [アタッチするインスタンス] が設定されていれば完了です。
ステップ5: WordPress 接続確認
curl -I "http://$STATIC_IP/wp-login.php"
HTTP 200 / 301 / 302 など、WordPress 側から正常な HTTP 応答が返ることを確認します。
HTTPS 強制設定やドメインリダイレクトを行っている場合は、最終的に正しいドメインの WordPress 管理画面へ到達できることを確認してください。
方法2: Instance Snapshot(手動スナップショット)からの復旧
復旧フロー
現在のインスタンス状態を確認
↓
スナップショット確認 / 作成
↓
スナップショット完成待機(5~10 分)
↓
復旧インスタンス作成
↓
インスタンス起動待機(3~5 分)
↓
スタティック IP 再割り当て
↓
WordPress 接続確認
↓
復旧完了
ステップ1: インスタンス情報確認
aws lightsail get-instance \
--instance-name WordPressInstance \
--region ap-northeast-1 \
--query "instance.{Name:name,State:state.name,CreatedAt:createdAt,BundleId:bundleId,AvailabilityZone:location.availabilityZone}" \
--output table
出力例:
----------------------------------------------------------
| GetInstance |
+-------------------+------------------------------------+
| AvailabilityZone | ap-northeast-1a |
| BundleId | nano_3_0 |
| CreatedAt | 2026-06-15T14:12:34.868000+09:00 |
| Name | WordPressInstance |
| State | running |
+-------------------+------------------------------------+
重要: BundleId(nano_3_0)と AvailabilityZone(ap-northeast-1a)を控えておきます。
ステップ2: 手動スナップショット作成
aws lightsail create-instance-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--instance-name "[インスタンス名]" \
--region ap-northeast-1
スナップショット名を必ず控えておきます。
ステップ3: スナップショット完成状況確認(5~10 分待機)
aws lightsail get-instance-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--region ap-northeast-1 \
--query "instanceSnapshot.state" \
--output text
実行結果が available になったらスナップショットの完成です。
ステップ4: 復旧インスタンス作成
aws lightsail create-instances-from-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--instance-names "[新しく作成するインスタンス名]" \
--bundle-id "[BUNDLE_ID]" \
--availability-zone "[AVAILABILITY_ZONE]" \
--region ap-northeast-1
注意: BUNDLE_ID と AVAILABILITY_ZONE は、ステップ1 で確認した情報に置き換えてください。
ステップ5: インスタンス起動待機(3~5 分)
aws lightsail get-instance \
--instance-name "[新しく作成するインスタンス名]" \
--region ap-northeast-1 \
--query "instance.state.name" \
--output text
実行結果が running になったらインスタンス起動完了です。
ステップ6: スタティック IP 再割り当て
- デタッチします
aws lightsail detach-static-ip \
--static-ip-name [スタティック IP 名] \
--region ap-northeast-1
- アタッチします
aws lightsail attach-static-ip \
--static-ip-name [スタティック IP 名] \
--instance-name [アタッチするインスタンス] \
--region ap-northeast-1
- 再割り当てを確認します
aws lightsail get-static-ip \
--static-ip-name [スタティック IP 名] \
--region ap-northeast-1 \
--query "staticIp.attachedTo" \
--output text
実行結果で [アタッチするインスタンス] が設定されていれば完了です。
ステップ7: WordPress 接続確認
curl -I "http://$STATIC_IP/wp-login.php"
HTTP 200 / 301 / 302 など、WordPress 側から正常な HTTP 応答が返ることを確認します。
HTTPS 強制設定やドメインリダイレクトを行っている場合は、最終的に正しいドメインの WordPress 管理画面へ到達できることを確認してください。
トラブルシューティング
WordPress が白い画面で表示される
原因: PHP エラー、ファイル権限の問題
対応:
SSH で接続:
ssh -i ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem ec2-user@203.0.113.1
WordPress デバッグログ確認:
# デバッグログ有効化
cat >> /var/www/wp-config.php << 'EOF'
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', true);
EOF
# ログ確認
tail -f /var/www/html/wp-content/debug.log
インスタンス起動が遅い
原因: ディスク容量不足、リソース不足
対応:
ディスク使用量確認:
df -h
不要なファイル削除:
# WordPress 一時ファイル削除
rm -rf /var/www/html/wp-content/cache/*
より大きなバンドルでインスタンス再作成:
# nano → small バンドルで再作成
aws lightsail create-instances-from-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--instance-names "[新しく作成するインスタンス名]" \
--bundle-id small_3_0 \
--availability-zone ap-northeast-1a \
--region ap-northeast-1
スナップショットから作成するインスタンスは、元インスタンスと同じ、または大きいバンドルを選択します。元より小さいバンドルは選択できません。
スタティック IP の割り当てに失敗
原因: デタッチ処理が完了していない
対応:
30秒待機後に再実行:
sleep 30
aws lightsail attach-static-ip \
--static-ip-name [スタティック IP 名] \
--instance-name [アタッチするインスタンス] \
--region ap-northeast-1
スナップショット作成がタイムアウト
原因: ディスク容量が大きい、または AWS 側の問題
対応:
スナップショット状況確認:
aws lightsail get-instance-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--region ap-northeast-1 \
--query "instanceSnapshot.{state:state,sizeInGb:sizeInGb,createdAt:createdAt}" \
--output json
スナップショット削除して再作成:
aws lightsail delete-instance-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--region ap-northeast-1
sleep 10
# 再作成
aws lightsail create-instance-snapshot \
--instance-snapshot-name "[スナップショット名]" \
--instance-name "[インスタンス名]" \
--region ap-northeast-1
復旧後のチェックリスト
復旧完了後、以下の項目を確認することをお勧めします。
□ WordPress 管理画面にログイン可能
□ 記事一覧が正常に表示される
□ メディアライブラリが復旧されている
□ プラグイン・テーマが正常に動作している
□ SSL/HTTPS が有効
□ メール送信が機能している
□ 自動スナップショット設定が有効
□ データベース接続エラーがない
□ ディスク容量に余裕がある(80% 以下が目安)
□ ファイルパーミッションが正確
復旧後のクリーンアップ
復旧が完了したら、不要なリソースを削除して費用を削減します。
旧インスタンス削除
復旧が完全に確認できた後、旧インスタンスを削除
aws lightsail delete-instance \
--instance-name "[削除するインスタンス名]" \
--region ap-northeast-1
古いスナップショット削除
# 削除対象のスナップショット確認
aws lightsail get-instance-snapshots \
--region ap-northeast-1 \
--query "instanceSnapshots[].{Name:name,CreatedAt:createdAt}" \
--output table
# 削除
aws lightsail delete-instance-snapshot \
--instance-snapshot-name "[削除するスナップショット名]" \
--region ap-northeast-1
ベストプラクティス
バックアップ戦略
定期的なバックアップ戦略
├── Automatic Snapshot(毎日 18:00 UTC)
│ ├── 用途: 日常的な変更を保存
│ ├── 保持期間: 直近 7 日分
│ └── 復旧時間: 3~5 分
│
├── Instance Snapshot(重要な変更前)
│ ├── 用途: メジャーアップデート前
│ ├── 保持期間: 3~6ヶ月
│ └── 復旧時間: 3~5 分
│
└── 外部ストレージへのエクスポート(月 1 回)
├── 用途: 長期保存
├── 保持期間: 1 年以上
└── 復旧時間: 数日(手動復旧必要)
注意: 自動スナップショット作成中は、手動スナップショットを作成できません。手動バックアップを取得する場合は、自動スナップショットの実行時間帯を避けてください。
復旧テスト計画
定期的に復旧テストを実施して、実際に復旧できることを確認
復旧テストスケジュール
├── 月 1 回: Automatic Snapshot から復旧テスト
├── 四半期 1 回: Instance Snapshot から復旧テスト
├── 年 1 回: フルスタック復旧テスト(本番同等環境)
└── 記録: テスト結果をドキュメント化
定期保守タスク
月単位のメンテナンスチェックリスト
□ スナップショット一覧確認
□ 不要なスナップショット削除
□ ディスク使用量確認
□ WordPress コアアップデート確認
□ プラグイン更新確認
□ ログファイル削除
□ ディスク容量確保
よくある質問(FAQ)
Q1: 復旧にかかる時間はどのくらい?
A: 以下の時間がかかります。
- スナップショット作成: 5~10 分
- インスタンス復旧: 3~5 分
- スタティック IP 割り当て: 1~2 分
- 合計: 約 10~20 分
Q2: 復旧時にデータは失われないか?
A: スナップショット作成時点のデータが完全に復元されます。
ただし、スナップショット作成後の変更は失われます。
Q3: Instance Snapshot と Automatic Snapshot を併用できるか?
A: はい、両方を同時に使用できます。
推奨: Automatic Snapshot(日常用)+ Instance Snapshot(重要変更前)の併用
Q4: スナップショットはダウンロードできるか?
A: AWS API を通じて EBS スナップショットとしてエクスポート可能ですが、Lightsail スナップショットの直接エクスポート機能は限定的です。
Q5: スナップショットの保存場所はどこか?
A: AWS の管理下にあり、ユーザーが指定することはできません。
リージョン内の AWS インフラストラクチャに保存されます。
Q6: リージョン間でスナップショットをコピーできるか?
A: はい、できます。
手動スナップショットはスナップショット名を指定してコピーできます。
自動スナップショットは、元リソース名と復元日、または最新の復元可能スナップショットを指定して、手動スナップショットとしてコピーできます。
Q7: スナップショット作成中にインスタンスを操作できるか?
A: はい、できます。スナップショット作成中も WordPress の運用を継続できます。
ただし、パフォーマンスがやや低下する可能性があります。
Q8: 復旧インスタンスを元のインスタンスとして使用したい場合は?
A: 以下の手順で実施
- 復旧インスタンスが正常に動作することを確認
- スタティック IP を復旧インスタンスにアタッチ
- DNS レコードが正しくポイントしていることを確認
- 旧インスタンスを削除
まとめ
Lightsail のスナップショット機能は、WordPress インスタンスの強力なバックアップ・復旧機構です。
スナップショット機能を正しく活用することで、WordPress インスタンスの可用性と信頼性を大幅に向上させることができます。
この記事が、誰かのお役に立てば幸いです。