※本記事は [ストックリスト:AWS CLIでゼロから構築するWeb監視システム&自動コスト防衛] の第1弾です。
概要
Lambdaで定期処理(データ生成等)を行って成果物(index.html)をS3/CloudFront経由でWeb公開しつつ、エラー発生時にはAWS無料枠の範囲内でSlack(#alert)へ即時通知する仕組みを構築しました。
「中継用Lambdaを書かずに、Amazon Q Developer(旧AWS Chatbot)を使って完全ノーコードでリッチなSlack通知を実現する」という点がポイントです。
目的
-
Webページの自動生成と安全な公開:EventBridgeでLambdaを定期実行し、最新データを含む
index.htmlをS3に保存。CloudFront経由で高速かつセキュアに配信する。 - 完全無料枠(0円)でのエラー監視:5分間隔の標準解像度アラートを利用し、ランニングコスト0円で24時間監視を実現する。
- ノーコードでのSlack通知:中継用のコードを書かずに、Amazon Q Developerを活用して障害時(赤)と復旧時(緑)の通知を直感的に受け取る。
システム構成図
使用技術・サービス
-
実行・配信層
- Amazon EventBridge:Lambdaの定期実行トリガー
-
AWS Lambda:
index.htmlの生成処理(Python / Node.js等) - Amazon S3:生成されたHTMLファイルの格納先
- Amazon CloudFront:S3上のコンテンツをセキュアに配信
-
監視・通知層
- Amazon CloudWatch Alarm:Lambdaのエラーメトリック監視(5分間隔 / 標準解像度)
- Amazon SNS:CloudWatchからのアラート通知受け皿
- Amazon Q Developer (旧 AWS Chatbot):SNSからSlackへのメッセージ整形&中継
-
Slack:
#alertチャンネルでのアラート受信
この構成を選んだ理由(工夫したポイント)
1. なぜ SNS → Slack の中継に Amazon Q Developer を使ったのか?
通常、SNSからSlackへWebHookで通知する場合、「SNS ➔ 中継用Lambda ➔ Slack Webhook」といった形でコードを書く必要があります。
しかし、Amazon Q Developer(AWS Chatbot連携)を使うことで、以下のようなメリットが得られます。
- 完全ノーコード設定:AWSコンソールからSlackチャンネルを連携するだけで完了。
- 見やすい通知(リッチフォーマット):障害発生時は「赤(ALARM)」、自動復旧時は「緑(OK)」の色付きカード形式で通知され、メトリック情報やエラー詳細へのリンクも自動付与される。
2. コスト0円(無料枠内)に抑える監視設計
- CloudWatch Alarmを**標準解像度(5分間隔)**に設定。
- 標準解像度のアラームは10個まで無料枠で利用でき、監視対象サイトが不安定でアラームが何度発動しても(通知回数による従量課金はありません)費用は発生しません。無駄な高解像度(1分間隔)を避けることで、月額コストを完全に無料で維持しています。
成果
- 完全自動化:放置しておくだけでバックグラウンドでのWebコンテンツ更新と、24時間体制のエラー監視が回る仕組みができました。
- 障害検知と復旧の両立:エラー発生時だけでなく、自動復旧時の「OK(緑)」通知も同じSlackチャンネルに届くため、運用の安心感が大幅に向上しました。
- 運用コスト最小化:追加コードのメンテナンスが一切不要で、完全無料枠で稼働させることができています。

