はじめに
実際のエラーで CloudWatch アラームを発火させ、設定修復後にサイトと OK 状態を確認します。
先に前段のポートフォリオラボを完了してください。この環境は必要な前段機能と独自のリソースを提供します。以前のインスタンス、ファイル、認証情報ではなく知識を引き継ぎます。
認定試験との関連
| 認定 | タスク | 練習内容 |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 3.8 | メトリクスとアラームで障害と復旧を観察する。 |
ラボの概要

エラーのアラームを作成する
このステップでは、 ログは個々の出来事、メトリクスは数値、アラームは条件を継続評価します。アプリは失敗なら Errors=1、成功なら 0 を送信します。通知や自動修復は設定しません。 この Errors 指標は /website のページリクエストだけを測ります。画像などのファイルは別のログイベントを作ります。
フォルダーへ移動します。
cd /home/labex/project
環境識別子を読みます。
source website.env
echo "$INSTANCE_ID"
設定を読みます。Namespace は系列の分類、Application=portfolio は次元でこのアプリを選びます。高解像度メトリクスを 10 秒ごとに Sum で評価し、0 超で ALARM になります。
cat website-alarm.json
JSON ファイルでアラームを作ります。
aws cloudwatch put-metric-alarm --cli-input-json file://website-alarm.json
状態を読みます。
aws cloudwatch describe-alarms --alarm-names portfolio-errors
最初は INSUFFICIENT_DATA があり得ます。TreatMissingData=missing はデータなしを成功と扱いません。アラーム自体は故障を修復しません。
実際の障害を検知する
このステップでは、 提供された壊れた JSON を公開して障害を作ります。
壊れた内容を読みます。
cat profile-broken.json
SCP でプロフィールを上書きします。
scp -F ssh_config profile-broken.json ubuntu@"$PUBLIC_IP":/home/ubuntu/portfolio/profile.json
サイトを更新して Website unavailable を見てから 503 のログを読みます。精確な短語を引用符で指定します。
aws logs filter-log-events --log-group-name "$LOG_GROUP" --filter-pattern '"status=503"'
10 秒程度の評価期間を待ち、ページを再読み込みして状態を読みます。
aws cloudwatch describe-alarms --alarm-names portfolio-errors
実際の /website status=503 と ALARM を確認します。SSH とインスタンスは動いていてもアプリは失敗します。手動の状態変更は使いません。

サイトを修復して回復を確認する
このステップでは、 有効なプロフィールを公開し、アプリと監視をそれぞれ確認します。
正常ファイルを読みます。
cat profile-working.json
SCP で復元します。
scp -F ssh_config profile-working.json ubuntu@"$PUBLIC_IP":/home/ubuntu/portfolio/profile.json
サイトを更新して Alex Morgan と画像を確認したあと、200 のログを読みます。
aws logs filter-log-events --log-group-name "$LOG_GROUP" --filter-pattern '"status=200"'
新しい成功だけの評価期間を待ち、再読み込みして状態を読みます。
aws cloudwatch describe-alarms --alarm-names portfolio-errors
古い 503 が履歴に残っていても、新しい /website status=200 と OK が復旧を示します。データなしの状態は OK の代わりになりません。

演習監視とサイトを削除する
このステップでは、 指定された演習リソースだけを削除します。
インスタンスを終了します。
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
終了を待ちます。
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
portfolio-errors アラームを削除します。
aws cloudwatch delete-alarms --alarm-names portfolio-errors
演習ロググループを削除します。
aws logs delete-log-group --log-group-name "$LOG_GROUP"
準備済みバケット、画像、ロール、参照ログとネットワークを保持します。
まとめ
実際の 503 で ALARM を確認し、プロフィール修復後に 200 と OK を確認して演習リソースを削除しました。
公式ドキュメント: CloudWatch alarms, high-resolution custom metrics.



