目次
Amazon EventBridge の特徴
EventBridge は、AWS 内外で発生したイベントを受け取り、条件に合うイベントを別の AWS サービス(SNS、Lambda)や外部システムへ連携するサーバーレスサービスです。これにより、スケーラブルなイベント駆動型アプリケーションを簡単に構築できます。イベント駆動型アーキテクチャとは、イベントの発信と応答によって連携する、ゆるやかに結合されたソフトウェアシステムを構築するスタイルです。イベントが発生したら条件に合うものだけを他のサービスに連携できます。イベントの検知、フィルタリング、配信ができます。
EventBridge のイメージ
以下のようなイメージです。イベントが発生したら EventBridge が受け取り、条件に一致したらターゲットに連携します。
イベント発生元
CloudTrail / EC2 / S3 / GuardDuty / Security Hub / SaaS / 独自アプリ
↓
Amazon EventBridge
↓ 条件に一致したら
ターゲット
Lambda / Step Functions / SNS / SQS / ECS / Event bus / API Destination など
イベントの例
イベントの例です。特定の EC2 インスタンス i-xxxxxxxxxxxxxxxxxが停止した場合を設定しています。
{
"source": "aws.ec2",
"detail-type": "EC2 Instance State-change Notification",
"detail": {
"state": "stopped",
"instance-id": "i-xxxxxxxxxxxxxxxxx"
}
}
EventBridge の構成要素
- Event Source イベントを発生させるもの
- Event Bus イベントを受け取るルーター
- Rule イベントを判定する条件
- Target 条件に合ったイベントの送信先
イベントソース(Event Source)
イベントソース(Event Source) はイベントの発生元です。代表例は以下です。
- AWS サービス
- SaaS アプリケーション
- カスタムアプリケーション
- 他 AWS アカウントの EventBridge
AWS サービスの例
- EC2
- S3
- CloudTrail
- GuardDuty
- Security Hub
SaaS アプリケーションの例
- Datadog
- Zendesk
- Auth0
- PagerDuty
イベントバス(Event Bus)
イベントバスはイベントを受け取る場所です。EventBridge の中心です。イベントを受信するルーターであり、ゼロ個以上の送信先やターゲットに配信します。イベントバスは、イベントをさまざまなイベントソース(Event Source)から多数のターゲットにルーティングするのに適しており、オプションでターゲットに配信する前にイベントを変換できます。

この構成図を見るとイベントバスはルータのようなイメージです。イベントソースを受け取って正しいターゲットにルーティングをしています。どのようにルーティングするのかはルールによって仕分けられます。
EC2・DMSなどのAWSサービス
↓ イベントを送信
EventBridgeイベントバス
↓
EventBridgeルールで条件判定
↓
SNS・Lambda・SQSなどのターゲット
基本的には イベントバス は default で良いです。アプリなどの都合で分けないと問題になるなら分けるくらいで良いと思います。
ルール(Rule)
Rule は、イベントを選別する条件です。EventBridge にイベントが入ってきても、何もしません。Rule に一致したときだけ Target に送られます。
イベントの例
{
"source": "aws.ec2",
"detail-type": "EC2 Instance State-change Notification",
"detail": {
"state": "stopped",
"instance-id": "i-xxxxxxxxxxxxxxxxx"
}
}
EventBridge API Destinations
EventBridge API Destinations を利用して Slack や Jira などをターゲットにして EventBridge のイベントを送ることができます。AWS サービス以外の HTTPS API エンドポイントに直接送れます。EventBridge が HTTP クライアントになって外部 API を呼ぶイメージです。