こんにちは、駆け出しエンジニアのおちです。
この記事は「2025 Japan AWS Jr. Chanpions 夏のQiitaリレー 」の16日目の記事です。
過去の投稿はこちらからご覧ください!
はじめに
EC2インスタンスの状態監視、みなさんはどうしていますか?
今回は、EventBridgeを利用してEC2のステータス変更を検知してSlackに通知する仕組みを作ってみました。
LambdaやSNSは使わず、最小限の構成で実現できるのがポイントです。
構成
仕組みは極力シンプルにしました。
EC2インスタンスのステータス(起動・停止など)を EventBridge で検知し、SlackのWebhook を使って、指定したチャンネルへ自動で通知を送る流れになっています。
構築手順
1. Slackの準備
SlackのWebhooksを有効化するためにSlack AppとIncoming Webhookを作成していきます。
Slack Appの作成
以下のURLにアクセスして、「Create New App」をクリックします。
https://api.slack.com/apps
今回は細かい設定はしないので、「From a manifest」をクリックして、Appの名前を入力します。
設定がJSON形式で表示されるので、確認して「Next」→「Create」の順でクリックします。
Slack Webhookの作成
次に、Webhookを作っていきます。
Your Apps ページに作成したアプリが表示されるので、対象の App Name をクリックします。
メニューから 「Incoming Webhooks」 を選択し、画面下の 「Add New Webhook」 をクリックします。
チャンネルへのアクセス権限の許可画面に移るので、通知を送りたいチャンネルを選択します。
これでSlackの準備ができました!
2. EventBridgeの設定
次に、EventBridgeのルールを作成していきます。
「ルールを作成」をクリックします。
今回はデフォルトのイベントパスを利用します。
各項目を設定したらイベントパターンの構築に移ります。
EC2インスタンスの停止時・起動時に通知するように設定します。
イベントパターンは、左側の選択欄を設定していくと右側も自動で埋めてくれます。
続いてターゲット選択画面です。
API送信エンドポイントの欄はWebhookのURLを入れます。
「認証を設定」のAPIは必要ないので、適当に「sample」「test」等で埋めます。
追加設定のトグルをクリックして「入力トランスフォーマーを設定」をクリックします。
入力パス、テンプレートは以下を入力しました。
必要に応じて変更してください。
{
"instanceId": "$.detail.instance-id",
"state": "$.detail.state",
"region": "$.region",
"time": "$.time",
"account": "$.account"
}
{
"text": "*🖥 EC2 インスタンスステート変更通知*\n• インスタンスID: <instanceId>\n• 状態: <state>\n• リージョン: <region>\n• アカウント: <account>\n• 時刻: <time>"
}
項目の設定が終わればルール完成です!
3. 動作確認
準備ができたので、実際にEC2を起動・停止させてみました。
ばっちり通知が来ていますね!
おわりに
今回はEC2で試しましたが、他のサービスにも応用することもできそうなので、色々と試してみようと思います!
最後まで読んでいただきありがとうございました!
この記事がどなたかのAWS運用自動化のヒントになれば嬉しいです。