AWS Health通知を見逃さない！EventBridgeとSNSでBacklogへ自動起票しよう


こんにちは！GLUE事業部 SRE 大田原です。

日々発生するAWS Healthイベント通知、ちゃんとチェックできていますか？大事な通知を見逃してしまったり、通知管理ができておらず対応を忘れてしまった…なんてこと、ありますよね？

この記事では、そんなAWS運用者のために、AWS Healthの通知を自動でBacklog課題として起票する方法をご紹介します！ 具体的には、AWSの **EventBridge** と **SNS**、そして **Backlogのメール起票機能** を組み合わせた、比較的カンタンに実装できる構成です。

これを設定すれば、

* **通知の見逃しや対応忘れ防止**
* **手動起票の手間削減**
* **迅速なインシデント対応**

につながり、日々の運用がもっと楽になりますよ！

## 背景と前提知識

**AWS Healthとは？**

AWS Healthは、利用中のAWS環境に影響を与える可能性のある問題や変更、メンテナンスなどの情報を通知してくれるサービスです。EC2インスタンスの停止予定やセキュリティ勧告など、重要な情報が含まれるため、運用担当者はこれらの通知を確実に把握し、必要に応じて対応する必要があります。AWSマネジメントコンソールの「AWS Health Dashboard」サービスページから確認できます。

**手動対応のツラミ…**

従来の方法だと、運用担当者がAWS Health Dashboardやメール通知を定期的にチェックし、内容を確認した上で、作業忘れ防止のため手作業でBacklogなどのタスク管理ツールに課題を起票する必要がありました。\
この方法には、以下のような課題があります。

* **見逃しリスク:** 大量の通知に埋もれて重要な情報を見逃してしまう可能性があります。
* **対応の遅れ:** 手動での確認・起票作業に時間がかかり、対応が遅れることがあります。
* **作業負荷:** 定期的なチェックと起票作業は、担当者にとって負担となります。
* **情報共有の煩雑さ:** スプレッドシートやSlackなど複数のツールを使うと、情報が分散し、共有が難しくなることがあります。
* **ヒューマンエラー:** 手作業による起票ミスが発生するリスクがあります。

**今回の構成で使うサービス**

* **Amazon EventBridge:** AWSサービスやカスタムアプリケーションからのイベントを検知し、指定したターゲット（今回はSNS）にルーティングするサービスです。
* **Amazon Simple Notification Service (SNS):** 発行/サブスクライブ型のメッセージングサービスです。今回はEventBridgeからのイベントをメールで送信するために使用します。
* **Backlog メールによる課題登録:** Backlogには、チケット起票用のシステム連携メールアドレスへメール送信をすることで、自動的に課題を登録する機能があります。

## EventBridge と SNS で Backlog 自動起票を実現しよう！

### 構成

それでは、実際にAWS HealthイベントをBacklogに自動起票する仕組みを構築していきましょう！ 今回構築するシステムの全体像は以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4117501/a90388e7-27cb-4e47-8617-1010a463fc87.png)


### **手順1: Backlogでメールによる課題登録を設定する**

まず、Backlog側でメールを受信して課題を起票するための準備をします。

1. 課題を起票したいBacklogプロジェクトの設定画面を開きます。
2. 「インテグレーション」>「メールによる課題登録」を選択します。
3. 「課題登録用メールアドレスの追加」から、SNSから送信する先のメールアドレスを発行します。このメールアドレスにメールを送信することで自動で起票されるようになります。
   * 件名に課題の種別や担当者を含める設定なども可能です。詳細はBacklogのヘルプを確認してください。

### **手順2: SNSトピックとサブスクリプションを作成する**

次に、EventBridgeからの通知を受け取り、Backlogのメールアドレスに転送するためのSNSトピックを作成します。

1. AWSマネジメントコンソールで「SNS」サービスに移動します。
2. 「トピック」メニューから「トピックの作成」をクリックします。
3. タイプは「スタンダード」を選択し、任意の名前（例: `aws-health-alert-to-backlog-topic`）を入力してトピックを作成します。
4. 作成したトピックを選択し、「サブスクリプションの作成」をクリックします。
5. プロトコルとして「Eメール」を選択します。
6. エンドポイントに、手順1でコピーしたBacklogの「課題登録用メールアドレス」を貼り付けます。
7. 「サブスクリプションの作成」をクリックします。
   1. **重要:** Backlog側に確認メールが届いて起票されますが、メール内の「Confirm subscription」リンクを **クリックせずに** 先に進んでください。**ただし、「Confirm subscription」リンクはこの後の手順で使うのでコピーしておいてください。**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4117501/19af2f5f-9385-4983-b6d9-a0837329b62c.png)

8. AWSマネジメントコンソールから、「サブスクリプションの確認」をクリックし、先ほどの「Confirm subscription」リンクを貼り付けます。
   * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4117501/1b4f1f57-b611-4b97-9044-3d3990a25ad3.png)

    
9. トピックページをリロードし、サブスクリプションステータスが「確認済み」となったことを確認します。

### **手順3: EventBridgeルールを作成する**

最後に、AWS Healthイベントを検知してSNSトピックに送信するためのEventBridgeルールを作成します。

1. AWSマネジメントコンソールで「EventBridge」サービスに移動します。
2. 「ルール」メニューから「ルールを作成」をクリックします。
3. 任意の名前（例: `aws-health-alert-to-backlog-rule`）を入力します。
4. 「イベントパターンを持つルール」を選択します。
5. イベントソースとして「AWSのサービス」>「Health」を選択します。イベントタイプとして、通知したいHealthイベントを選択します。今回はすべてのAWS Healthイベントを対象とします。
   * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4117501/eead043f-02a1-405d-96ce-af1ab4905629.png)
   * ※必要に応じて、影響を受けるアカウントIDやリージョンなどでさらに絞り込んで検知することもできます。
     
6. ターゲットとして「SNSトピック」を選択します。
7. トピックとして、手順2で作成したSNSトピックを選択します。
8. 折りたたまれている「追加設定」から、ターゲット入力で「入力トランスフォーマー」を選択し、「入力トランスフォーマー」ボタンをクリックします。
   * 標準ではイベントの生jsonで起票されてしまうので、入力トランスフォーマーを利用します。これを使うことで、起票される際の本文を調整できます。仕様については [Amazon EventBridge 入力変換](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-transform-target-input.html) を参考にしてください。
   * 今回は以下内容としました。

   入力パス:

   ```jsonc
   
   {
       "account": "$.account",
       "eventDescription": "$.detail.eventDescription[0].latestDescription",
       "eventRegion": "$.detail.eventRegion",
       "originalJson": "$",
       "resources": "$.resources",
       "time": "$.time"
   }
   
   ```

   入力テンプレート:

   ```auto
   "発生日時: <time>"
   "アカウント: <account>"
   "リージョン: <eventRegion>"
   "リソース: <resources>"
   "内容:"
   "<eventDescription>"
   
   
   "[イベント原文]"
   "<originalJson>"
   
   ```
9. 「作成」をクリックしてルールを有効化します。

**これで設定は完了です！**

今後、指定したAWS Healthイベントが発生すると、EventBridgeがそれを検知し、SNS経由でBacklogプロジェクトにメールが送信され、自動的に課題が起票されるようになります🎉

**補足**

* Backlogのプロジェクト設定で、メールの件名や本文から担当者やカテゴリを自動設定するルールを活用すると、より便利になります。
* こういったシステム通知には、SNSの他に [AWS User Notifications](https://aws.amazon.com/jp/notifications/) を活用してもよさそうです。

## まとめ

今回は、AWS EventBridgeとSNS、Backlogのメール起票機能を使って、AWS Healthイベントを自動でBacklog課題として起票する方法をご紹介しました。

* **AWS HealthイベントをEventBridgeで検知する**
* **EventBridgeからSNSトピックへイベントを送信する**
* **SNSからBacklogのメールアドレスへメールを送信し、課題を自動起票する**

この仕組みを導入することで、重要なHealth通知の見逃しを防ぎ、手動での起票作業から解放され、より迅速な対応が可能になります。

まずはこのシンプルな構成から試してみて、運用の効率化を実感してみてください。\
この記事が、あなたのAWS運用を少しでも楽にするヒントになれば嬉しいです！

## 参考情報

* [AWS Health](https://docs.aws.amazon.com/ja_jp/health/latest/ug/what-is-aws-health.html)
* [Amazon EventBridge 入力変換](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-transform-target-input.html)
* [Amazon SNS トピックの作成とメッセージの発行](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-getting-started.html)
* [メールによる課題登録を設定する – Backlog ヘルプセンター](https://support-ja.backlog.com/hc/ja/articles/360036147793-%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AB%E3%82%88%E3%82%8B%E8%AA%B2%E9%A1%8C%E7%99%BB%E9%8C%B2%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)