Amazon EventBridgeを用いたイベント通知と初心者ならではの落とし穴

Topics
この記事はNHN テコラス Advent Calendar 2025の8日目の記事です。
はじめに
こんにちはGanonです。去年まで開発のチームにいましたが、チームの異動によりAWSを最近触り始めました。
そんな中、EventBridgeを使用することがあり、便利なサービスだと思いました。
そこで簡単な使い方と、実際にあった詰まりポイントを紹介します!
今回使用したサービス
Amazon EventBridge
EventBridgeは、イベントを使用してアプリケーションコンポーネントを接続するサーバーレスサービスであり、スケーラブルなイベント駆動型アプリケーションの構築を容易にします。イベント駆動型アーキテクチャは、イベントの発行と応答によって連携する疎結合ソフトウェアシステムを構築するスタイルです。
AWS CloudTrail
AWSアカウントの運用およびリスク監査、ガバナンス、コンプライアンスを実現するのに役立つサービスです。ユーザー、ロール、またはAWSサービスによって実行されたアクションは、CloudTrailにイベントとして記録されます。イベントには、コンソール、AWSコマンドラインインターフェイス、AWS SDKおよびAPIで実行されたアクションが含まれます。
Amazon Simple Notification Service
選択した媒体に対して通知を送る機能や、特定のアクションをトリガーとして通知を送る機能を有しているメッセージングサービスです。
これら3つのサービスを連携させて、S3にデータが追加された際にCloudTrailがログを取得し、EventBridgeとSNSを経由して通知が届く仕組みを構築します。
また、IAMポリシーの作成時の通知機能に私がハマったポイントも紹介します。
手順
1.S3バケットを作成する
デフォルトのままで問題ありません。

2.CloudTrailの証跡を有効にする

イベントから管理イベントとデータイベントを選択します。管理イベントは「読み取り」「書き込み」を選択します。データイベントは以下を参考にしてください。

その他の設定はデフォルトのままで問題ありません。
3.SNSトピックを作成する
SNSトピックを作成します。

サブスクリプションの登録をします。プロトコルはEメールを選択し、エンドポイントは受け取りたいメールアドレスを登録します。

登録したメールアドレスに承認メールが届きますので、承認します。

4.EventBridgeルールを作成する
ルールの詳細を設定します。名前や説明は任意で問題ありません。

イベントパターンを構築します。今回はS3バケット「ganon-bucket」にデータが入ると通知が来るようにしました。

参考 ※bucketNameには自身で作成したS3バケット名をご記入ください
{
"source": ["aws.s3"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject", "PostObject", "CopyObject", "CompleteMultipartUpload"],
"requestParameters": {
"bucketName": ["ganon-bucket"]
}
}
}
作成したSNSトピックを選択します。

5.[テスト]S3バケットにデータを追加する
csvファイルを入れてみます。

メールが届きましたら、テスト完了です。

詰まったところ
通知が来るようになり順調だったある日、IAMポリシーの作成・削除を通知するように設定しましたが、なぜか通知が届きませんでした。
なぜだ?
結論から言うと、IAMのようなグローバルサービスに対する証跡をアクションにしたい場合は、CloudTrailの証跡、EventBridge、SNSトピックをバージニア北部リージョン(us-east-1)で作成する必要がありました。
今回は東京リージョン(ap-northeast-1)で作成していたため、証跡が取れていませんでした。
2021 年 11 月 22 日現在、AWS CloudTrail は証跡によるグローバルサービスイベントのキャプチャ方法を変更しました。Amazon CloudFront、AWS Identity and Access Management、AWS STS によって作成されたイベントは、作成されたリージョン、つまり米国東部 (バージニア北部) リージョン (us-east-1) に記録されるようになりました。これにより、CloudTrail によるこれらのサービスの処理方法が、他の AWS グローバルサービスと一致するようになります。
引用:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html
「バージニアリージョンで作成しないと通知来ませんよ!」とドヤ顔で言ったら先輩に「それはそう」と返されたので、もっと勉強しようと思いました。
最後に
CloudTrailの証跡からAWSアカウント上の操作ログをイベントとして指定した媒体に通知が届く仕組みは、セキュリティ監視やインシデント対応の場面で必要になる機能だと思います。
そういった場面でお役立ていただければ幸いです!
NHN テコラスの採用情報はこちら
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2023年新卒入社。筋肉で解決するタイプのエンジニア
Recommends
こちらもおすすめ
-
Amazon SageMaker Debuggerを試してみる
2019.12.25
-
AWS Chatbotを使って、Slack通知をカスタマイズする
2024.2.15
-
お願い城之内、Amazon S3 のバケットポリシーに Deny を使わないで!
2022.11.28
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16
