Amazon EventBridge

Amazon EventBridge の特徴

EventBridge は、AWS 内外で発生したイベントを受け取り、条件に合うイベントを別の AWS サービスや外部システムへ連携するサーバーレスサービスです。これにより、スケーラブルなイベント駆動型アプリケーションを簡単に構築できます。イベント駆動型アーキテクチャとは、イベントの発信と応答によって連携する、ゆるやかに結合されたソフトウェアシステムを構築するスタイルです。イベントが発生したら条件に合うものだけを他のサービスに連携できます。イベントの検知、フィルタリング、配信ができます。

EventBridge のイメージ

以下のようなイメージです。イベントが発生したら EventBridge が受け取り、条件に一致したらターゲットに連携します。

イベント発生元
  CloudTrail / EC2 / S3 / GuardDuty / Security Hub / SaaS / 独自アプリ
        ↓
Amazon EventBridge
        ↓ 条件に一致したら
ターゲット
  Lambda / Step Functions / SNS / SQS / ECS / Event bus / API Destination など

イベントの例

イベントの例です。

{
  "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)から多数のターゲットにルーティングするのに適しており、オプションでターゲットに配信する前にイベントを変換できます。

この構成図を見るとイベントバスはルータのようなイメージです。イベントソースを受け取って正しいターゲットにルーティングをしています。どのようにルーティングするのかはルールによって仕分けられます。

ルール(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 を呼ぶイメージです。