AWS EC2の障害対応と復旧の基本ステップを初心者向けにやさしく解説
生徒
「先生、EC2が急に止まったり動かなくなったりしたらどうすればいいですか?」
先生
「まずは冷静に問題を確認するのが大事です。AWS(エーダブリューエス)にはCloudWatch(クラウドウォッチ)でログや状態を見たり、スナップショットやAMI(エーエムアイ)を使った復旧方法もあります。」
生徒
「具体的にどんなステップで対応すればいいんですか?」
先生
「順番に進めれば初心者でも安心です。エラー確認や再起動、スナップショットから復旧など、基本をわかりやすく解説しますね。」
1. 障害とは?どんな時に起こる?
障害(ショウガイ)とは、EC2インスタンスが予期せず停止したり、Webサイトが表示されないときなどの問題です。
原因は、ディスク容量不足、CPU(シーピーユー)過負荷、ネットワーク障害、OSエラーなどさまざまです。
2. 障害発生時に最初にする確認
- ① EC2ダッシュボードでインスタンスが「running」かを確認
- ② CloudWatchのステータスチェック結果を見る
- ③ システムログ(コンソールログ)にエラーの記録がないか確認
CloudWatch Logsでは、「CPU使用率が急上昇していないか」「ディスクの書き込みエラーがないか」なども確認できます。
3. 軽微な障害ならまず再起動
EC2が起動中であれば、まずは再起動(reboot)を試します。OSやサービスが不安定なときに有効です。
EC2ダッシュボードで「再起動」ボタンをクリックするだけでOKです。
4. 再起動しても直らない時の対応
- ① システムログを再度確認する
- ② ストレージ(EBS)にエラーがないかチェック
- ③ EC2のステータスチェックでハードウェア障害を確認
ハードウェア障害などの場合は、別のインスタンスに切り替える必要があります。
5. 障害対応用にAMIやスナップショットを用意
あらかじめAMI(エーエムアイ、サーバー全体のイメージ)やEBSスナップショットを作っておくと、すぐに復旧可能です。
AMIとは、仮想マシンの状態をまるごと保存できるイメージです。スナップショットはディスクだけを保存するバックアップです。
6. スナップショットからの復旧手順
- ① AWSコンソールでEBSの「スナップショット」を選ぶ
- ② 対象スナップショットから新しいEBSを作成
- ③ そのEBSを新しいEC2にアタッチ(取り付け)
- ④ 必要に応じてOSやサービスを再起動
これで、障害前の状態を復元できます。
7. AMIを使った復旧も可能
AMIがある場合は、新しいインスタンスをAMIから起動するだけ。設定済みのサーバー環境が丸ごと復旧できます。
新しく起動したEC2には、Elastic IPやIAMロールなどもそのまま引き継げます。
8. 障害後のチェックと動作確認
- ① 新しいEC2が正常に起動しているか
- ② CloudWatchでCPUやネットワーク、ディスクの状態を監視
- ③ サービス(WebやDB)が正常に動作しているか
さらに、CloudWatchアラームを設定し、山ほど負荷が上がったときに通知を受ける仕組みを整えておくのがオススメです。
9. 障害対応のポイントまとめ
EC2の障害が起こっても、慌てず以下の流れで進めれば安心です。
- 状態確認(インスタンスとCloudWatch)
- 再起動を試す
- ログやストレージをチェック
- スナップショット/AMIで復旧
- 動作確認と監視強化
これらのステップを覚えれば、EC2の障害対応に自信が持てるようになります。
まとめ
AWS(アマゾンウェブサービス)を利用する上で、EC2インスタンスの障害対応は避けては通れない重要なスキルです。システムを運用していると、いつかは必ずトラブルに直面します。しかし、本記事で解説したように、障害の予兆を捉える監視設定、迅速な再起動判断、そしてバックアップを活用した復旧手順を理解していれば、過度に恐れる必要はありません。
EC2障害対応の重要キーワードとベストプラクティス
効率的な復旧を実現するためには、日頃からの準備が欠かせません。クラウド環境ならではの柔軟性を活かし、以下のポイントを意識した運用を心がけましょう。
- 自動復旧(Auto Recovery)の設定: インスタンスのステータスチェックが失敗した際に、自動で別の物理ホストへ移動させる設定が可能です。
- 疎結合なアーキテクチャ: データをEBS(Elastic Block Store)やS3(Simple Storage Service)に分離しておくことで、インスタンス自体が壊れてもデータ損失を防げます。
- CloudWatchアラームの活用: 障害が発生してから気づくのではなく、CPU使用率やディスク空き容量に閾値を設け、メール等で通知を受け取る仕組みを構築しましょう。
復旧に役立つコマンドとスクリプト
AWS CLI(コマンドラインインターフェース)を活用することで、ブラウザのコンソールにログインしなくても迅速に状況確認や操作が可能です。例えば、特定のインスタンスの状態を取得したり、手動でスナップショットを作成したりする際のコマンドは以下の通りです。
【Linuxコマンド例:インスタンスの状態確認】
aws ec2 describe-instance-status --instance-ids i-0123456789abcdef0
{
"InstanceStatuses": [
{
"InstanceId": "i-0123456789abcdef0",
"InstanceState": {
"Code": 16,
"Name": "running"
},
"InstanceStatus": {
"Status": "ok"
},
"SystemStatus": {
"Status": "ok"
}
}
]
}
【Python (Boto3) を使った自動スナップショット作成の例】
プログラムから定期的にバックアップを取得しておくことで、障害時の復元ポイントを確保できます。
import boto3
def create_ebs_snapshot(volume_id, description):
ec2 = boto3.client('ec2', region_name='ap-northeast-1')
try:
# EBSボリュームのスナップショットを作成
response = ec2.create_snapshot(
VolumeId=volume_id,
Description=description
)
print(f"Snapshot created successfully: {response['SnapshotId']}")
return response['SnapshotId']
except Exception as e:
print(f"Error creating snapshot: {e}")
return None
# 使用例:特定のボリュームIDを指定してバックアップ
volume_target = 'vol-0a1b2c3d4e5f6g7h8'
create_ebs_snapshot(volume_target, 'Manual Backup before maintenance')
クラウドネイティブな保守・運用の考え方
物理サーバーの時代とは異なり、AWSでは「壊れたら直す」よりも「壊れたら新しいものに置き換える(Replace)」という考え方が主流です。AMI(Amazon Machine Image)を常に最新の状態に保ち、不具合が起きたインスタンスは破棄して、新しいAMIからクリーンな環境を立ち上げ直す。この迅速な「切り捨てと再生成」こそが、可用性を高める鍵となります。
また、TerraformやCloudFormationといったIaC(Infrastructure as Code)ツールを併用することで、万が一の設定ミスによる障害でも、正常な状態のコードからインフラを再デプロイできるようになります。初心者のうちは難しいかもしれませんが、まずは手動での復旧ステップを完璧にマスターし、徐々に自動化の領域に踏み出してみましょう。
生徒
「先生、まとめを読んで障害対応の流れがより具体的になりました。再起動で直らない場合は、バックアップから新しい環境を作る『置き換え』の方が確実なんですね。」
先生
「その通りです!クラウドでは、一つのサーバーを修理し続けるよりも、バックアップから新しいサーバーを立てる方が、ダウンタイムを短くできる場合が多いんですよ。」
生徒
「Pythonのコード例も見ましたが、プログラムで定期的にスナップショットを撮っておけば、さらに安心ですね。でも、コマンドを打つのはまだ少し緊張します……。」
先生
「最初は誰でも緊張しますよ。まずはテスト用のインスタンスで、わざと停止させてからAMIで復旧させる練習をしてみると自信がつきます。実機で試すのが一番の勉強になりますからね。」
生徒
「なるほど。ステータスチェックが失敗していても、CloudWatchで過去の負荷状況が見れれば、何が起きたか推測しやすいってことも分かりました。普段からログを見る癖をつけます!」
先生
「素晴らしい心がけですね。障害は起きないに越したことはありませんが、起きた時に『どう動くか』が決まっていれば、インフラエンジニアとして一人前です。今回学んだステップを忘れないように、運用マニュアルとしてメモしておくと良いでしょう。」
生徒
「はい!トラブルに強いエンジニアになれるよう、これからもAWSの各サービスを組み合わせて、より堅牢なシステム構成を勉強していきます。ありがとうございました!」