皆さん、こんにちは!秋葉です。
AWSを使っていると、「あれ、このインスタンス調子悪いな?」と思ったら実はAWS側の障害だったり、メンテナンスのメールを見逃して強制再起動がかかったり……という経験はありませんか?
今回は、AWSからの重要なお知らせ(AWS Healthイベント)をキャッチして、使い慣れたメールやチャットに飛ばすAmazon EventBridge + SNSの構築方法をシェアします。

実は以前、権限の都合上「User Notificationsのコンソールにすら触れない」という経験をしました。

そうした現場の制約も踏まえ、本記事ではより汎用性が高く、確実な手段であるEventBridgeを使用しています。
はじめに
実はAWS Healthイベントには「通知が飛んでくる場所(リージョン)」と「通知の影響範囲(スコープ)」にルールがあるのをご存知でしょうか?
これを知らずに「東京リージョン」だけに設定していると、重要なグローバルサービスの障害を見逃してしまうかもしれません。今回は、設定時に必ず考慮すべき2つの観点について解説します。
- リージョン固有か、グローバルか
特定のリージョン(東京など)で起きていることか、AWS全体に関わることか。 - アカウント固有か、パブリックか
自分自身の所有リソースに関わることか、全ユーザーに影響する広域障害か。
EventBridgeルールの作成
グローバルイベントを検知したい場合
IAM、Route 53、CloudFrontなどのグローバルサービスに関する通知は、バージニア北部リージョン(us-east-1)に集約されます。
重要: グローバルイベントを検知したい場合は、必ず バージニア北部リージョン でルールを作成してください。
アカウント固有のイベント(自分に関係あるもの)
以下フィルターパターンでEventBridgeを作成してください。
{
"source": ["aws.health"],
"detail-type": ["AWS Health Event"],
"detail": {
"eventScopeCode": ["ACCOUNT_SPECIFIC"]
}
}
パブリックイベント(広域なもの)
以下フィルターパターンでEventBridgeを作成してください。
{
"source": ["aws.health"],
"detail-type": ["AWS Health Event"],
"detail": {
"eventScopeCode": ["PUBLIC"]
}
}
まとめ
今回は、AWS Healthイベントを確実にキャッチするための EventBridge + SNS の設定パターンについて解説しました。
最近は「AWS User Notifications」という便利な新機能も登場していますが、私のように権限設定(IAM)の都合上使用できないことも少なくありません。
本記事がどなたかの役に立てれば幸いです!
