EventBridge

【VPC外リージョンサービス】

EventBridge は、サーバーレスの Event Bus(イベントバス) サービスです。

AWS Service Events(AWSサービスイベント)、Partner Events(パートナーイベント)、および Custom Events(カスタムイベント) を統合的に受け取ることができます。また、アプリケーションから PutEvents API を使用して独自の Event を送信することも可能です。

受信したEvent(イベント) は、Event Pattern(イベントパターン) を定義した Rule(ルール) に基づいて評価され、指定された Target(ターゲット) へルーティングされます。 Target には、Lambda、Step Functions、SNS、SQS、ECS、EKS、Kinesis Data Streams/Firehose、および外部API連携を行う API Destination などを指定することができます。

EventBridge は、Schema Registry(スキーマレジストリ) によりイベント構造をスキーマとして自動検出・管理し、型定義に基づいた開発を支援します。さらに、Event Archive(イベントアーカイブ) によって過去のイベントを保存し、Event Replay(イベント再送信) を利用して再処理やテストに活用することができます。また、イベント処理に失敗した場合には DLQ(Dead Letter Queue) に退避し、再試行や原因分析を行うことが可能です。

EventBridge は疎結合でスケーラブルなイベント駆動アーキテクチャを容易に実現し、監査・再処理・SaaS統合など多様なユースケースに柔軟に対応します。

重要用語

ユースケース

イベント駆動の運用自動化EC2インスタンスの状態変化やスケジュール(cron)などをトリガーにしてLambdaやSSM Automationを起動し、障害対応や定期処理を自動化する。
SaaSとのイベント連携ZendeskやGitHubなどのSaaSアプリからのイベントを受け取り、チケット作成や通知、社内システムとの連携フローを構築する。
マイクロサービス間の疎結合連携注文完了やユーザー登録などのビジネスイベントをバスに流し、複数のサービスがそれぞれ必要な処理をサブスクライブする形で連携させる。

ベストプラクティス

疎結合なイベント設計イベント駆動でサービス間を連携し、依存関係を減らす。
デッドレターキューの設定配信失敗イベントをSQSなどに退避し、再処理や調査を可能にする。
スキーマレジストリの利用イベントスキーマを管理し、契約ベースの開発を促進する。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【デフォルト】AWS内部で冗長化
 ・イベントバス(Event Bus)
 ・ルール処理エンジン
 ・イベントの一時保存層
 ・配信メカニズム
【自動リトライ 】デフォルトでオン
 ターゲットへの配信を最大24時間、指数バックオフで自動リトライ

セキュリティ

関連サービス設定内容
KMS(データの暗号化と鍵の安全管理)【イベントデータをKMSで暗号化が必要】
 独自KMSキーを使うことを推奨(鍵操作、監査)
Secrets Manager(機密情報の安全管理)-
SSM Parameter Store(設定情報の一元管理)-
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
ルール/バス設定の変更履歴・DLQ/暗号化準拠評価(対象に限る)
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
ルール追加・削除などのAPI異常検知
EventBridge が実行ロールを引き受ける典型的な連携パターン
実行ロールの連携先サービス実行ロールにアタッチするポリシー
CloudWatch Logslogs:CreateLogGroup
logs:CreateLogStream
logs:PutLogEvents
ECSecs:RunTask
iam:PassRole
EC2ec2:StopInstances
ec2:StartInstances
ec2:RebootInstances
DynamoDBdynamodb:GetItem
dynamodb:PutItem
dynamodb:UpdateItem
dynamodb:DeleteItem
dynamodb:Query
dynamodb:Scan
S3s3:ListBucket
s3:GetObject
s3:PutObject
s3:DeleteObject
Lambdalambda:InvokeFunction
Step Functionsstates:StartExecution
SQS(送信)sqs:SendMessage
SNSsns:Publish
Kinesis Data Streamskinesis:PutRecord
kinesis:PutRecords
Kinesis Data Firehosefirehose:PutRecord
firehose:PutRecordBatch
CodePipelinecodepipeline:StartPipelineExecution
CodeBuildcodebuild:StartBuild
EventBridgeevents:PutEvents
EventBridge Schedulerscheduler:CreateSchedule
scheduler:UpdateSchedule
scheduler:DeleteSchedule
Glueglue:StartJobRun
Batchbatch:SubmitJob
API Gatewayexecute-api:Invoke
Backupbackup:StartBackupJob
Redshift Data APIredshift-data:ExecuteStatement
Inspectorinspector2:StartAssessmentRun
SageMakersagemaker:StartPipelineExecution
Secrets Managersecretsmanager:RotateSecret
SSM Parameter Storessm:PutParameter
SSM Run Commandssm:SendCommand
SSM Automationssm:StartAutomationExecution
iam:PassRole
※)権限設計の原則

信頼ポリシー: EventBridge

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

リソースベースポリシーによる補完

実行ロールで不足する権限をEventBridge のリソースベースポリシーで補うパターン
リソースベースポリシーのPrincipalリソースベースポリシーのAction
【他のAWSアカウント】
arn:aws:iam::123456789012:root
events:PutEvents
【Organizations】
*(条件付き)
events:PutEvents
【SaaSパートナー】
events.amazonaws.com
events:PutEvents
※)権限設計の原則

ログ・監視

ログ出力先ログの種類
CloudWatch Logsイベント配信ログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
Invocationsターゲット呼び出し回数
MatchedEventsルールにマッチしたイベント数
TriggeredRulesトリガーされたルール数
DLQDeliveryFailedDLQ配信失敗数
DroppedEventsドロップされたイベント数
FailedInvocations失敗した呼び出し回数
FailedInvocationsToDLQDLQへの書き込み失敗数
InvocationsThrottledスロットルされた呼び出し数
RuleProcessingFailedルール処理の失敗数
ThrottledRulesスロットルされたルール数

制限値(固定値/ハードリミット/ソフトリミット)

固定値制限値
スケジュール式の数制限なし(ルール内)

ハードリミット制限値
イベントサイズ256 KB
イベントバッチサイズ10イベント

ソフトリミット制限値
ルール数/イベントバス300
イベントバス数/アカウント100
ターゲット数/ルール5
PutEvents スループット10,000 RPS(デフォルト)

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
カスタムイベント発行されるカスタムイベント数
クロスリージョンクロスリージョン、クロスアカウント転送
スキーマレジストリスキーマレジストリの使用
API DestinationsAPI Destinationsへの呼び出し
料金計算ツール

公式ページ

AWSドキュメント EventBridge