
AWS再入門ブログリレー Amazon EventBridge編(ECRイメージスキャン結果をSNS経由でメール通知)
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、コカコーラが大好きなカジです。
当エントリは弊社コンサルティング部による『AWS 再入門ブログリレー 2020』の 8日目のエントリです。
このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や2020年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。8日目のテーマはAmazon EventBridgeです。
目次
- Amazon EventBridgeとは?
 - メリット
 - EventBridgeのアーキテクチャ
 - EventBridgeでサポートされているAWSサービスからのイベント(抜粋)
 - EventBridgeでサポートされているパートナーからのイベント
 - 構築手順(EventBridgeでECRのスキャン結果通知をメール通知)
 - その他
 - 気になるレイテンシ-とSLA
 - 制限
 - 料金
 - 参考元
 - 最後に
 
Amazon EventBridgeとは?
Amazon EventBridgeは、雑に言うとマネージドイベントバスサービスです。
イベント駆動のアーキテクチャを容易に構築するためのもので、AWSのサービスや独自のアプリケーション、SaaSアプリケーションのデータ変更をイベントの送信元・送信先がお互いの実装を意識する必要が無く接続します。
あるサービスにおける、あるイベントを契機としたLambda処理などを丸っと構成することができます。 別システム間でのイベント連携についても、EventBridgeで一旦受けることことで、別システムの修正なく、自システム側でシステム追加に対応できるメリットがあります。
メリット
- イベント駆動のアーキテクチャを容易に構築
 - データの取り込みフィルタ、配信が実装なしに実現可能
 - イベント連携用のサーバが不要でオートスケール
 - AWSサービスや対応SaaSアプリケーションのイベントを元に連携も可能
 
EventBridgeのアーキテクチャ
- イベントソース
 - イベントバス(デフォルト/カスタム/パートナー)
 - ルール
 - ターゲット
 
EventBridgeのアーキテクチャ
3種類のイベントバス
| イベントソース | イベントバスの種類 | 
|---|---|
| AWSサービス | デフォルト | 
| 独自アプリケーション | カスタム | 
| SaaSアプリケーション | パートナー | 
EventBridgeでサポートされているAWSサービスからのイベント(抜粋)
かなりの量があるため、抜粋しています。
- Application Auto Scaling イベント
 - AWS Batch イベント
 - Amazon EBS イベント
 - Amazon EC2 Auto Scaling イベント
 - Amazon EC2 スポットインスタンスの中断イベント
 - Amazon EC2 状態変更イベント
 - Amazon Elastic Container Registry (Amazon ECR) イベント
 - Amazon Elastic Container Service (Amazon ECS) イベント
 - Amazon GuardDuty イベント
 - AWS Health イベント
 - AWS マネジメントコンソール サインインイベント
 - AWS OpsWorks スタックイベント
 - Amazon SageMaker イベント
 - AWS Security Hub イベント
 - AWS リソースのタグ変更イベント
 - AWS Trusted Advisor イベント
 - Amazon WorkSpaces イベント
 
EventBridgeでサポートされているパートナーからのイベント

構築手順(EventBridgeでECRのスキャン結果通知をメール通知)
ECRのスキャン結果をEventBridgeでSNS経由でメール通知してみます。
構成図

前提条件
- ECRは構築済み
 - ECRにDockerイメージをPush済み
 
ターゲットの準備(メール通知するためのSNSトピック作成)
トピックを作成します。

トピック名を入力しトピック作成

サブスクリプションの作成

サブスクリプションの作成でメールアドレスを登録

登録したメールアドレスに承諾メール(件名:AWS Notification - Subscription Confirmation)が届いているのでメールを開いて承諾(Confirmation)すると登録済みになります。

EventBridgeのルール作成
マネージメントコンソールでEventBridgeを選び

ルールを作成をクリック

ルール名と、サービスプロバイダにAWS、サービス名にECR、イベントタイプにECR Image Scanを選択

ターゲットに作成したSNSのトピックを選択し作成します

ECRでイメージスキャン実行
ECRを開いて、イメージスキャンを実行します。

実行した結果画面

SNS経由でのメール通知結果
SNS経由でメール送付されます。

その他
AWSアカウント間でAmazon EventBridgeイベントを送受信する場合は以下のブログが参考になります。
IAM Access AnalyzerをAmazon EventBridgeで監視してAmazon SNSで通知も以下のブログでできます
気になるレイテンシ-とSLA
2020/08/09時点
イベントの送受信の間に発生するレイテンシは約0.5秒(場合によって異なる場合あり)
EventBridge SLA(Service Level Agreement)は99.99%の月間稼働率
制限
2020/08/09時点 東京リージョンの場合(上限緩和可能なものもあり)
| 上限対象 | 上限値 | 
|---|---|
| イベント公開 APIリクエスト(PutEvent) | デフォルトで毎秒 1200 リクエスト | 
| その他のすべての API リクエスト | PutEvents以外のすべての EventBridge APIは、デフォルトで毎秒 50リクエスト | 
| イベントバス数 | アカウントあたり最大 100 イベントバス | 
| イベントバターン | 最大2048文字 | 
| 呼び出し | デフォルトで毎秒 2250 リクエスト | 
| ルール | イベントバスあたり 300 | 
| ターゲット | 1ルールあたり5ターゲット | 
料金
2020/08/09時点 東京リージョン料金
| 課金対象(受信したイベント) | 料金 | 
|---|---|
| AWS のサービスイベント | 無料 | 
| カスタムイベント | 100万件の公開済みカスタムイベントごとに 1.00USD | 
| サードパーティー (SaaS) のイベント | 100万件の公開済みイベントごとに 1.00USD | 
| クロスアカウントイベント | 100万件の送信済みクロスアカウントイベントごとに 1.00USD | 
スキーマレジストリとスキーマディスカバリー
スキーマレジストリとスキーマディスカバリーはEventBridgeで扱うイベントデータのスキーマ情報(あるいは型情報)を公開・共有するサービス
| 課金対象 | 料金 | 
|---|---|
| スキーマレジストリ | 無料 | 
| スキーマディスカバリー | 100万件の検出取り込みイベントごとに 0.10USD(1か月あたり500万件の取り込まれたイベントが無料) | 
詳細な料金はこちら
参考元
Amazon EventBridge サービスレベルアグリーメント (SLA)
20200122 AWS Black Belt Online Seminar Amazon EventBridge
最後に
EventBridgeで、簡単にイベント駆動のアーキテクチャを容易に構築できることや、通知する側、通知される側を独立することができるため、受信側のシステムで同じ通知を複数のシステムで受けたい場合でも、送信元のシステムに変更依頼することなく、自分たちのシステムで完結できるので、システムの拡張しやすくなると思いました。
以上、『AWS 再入門ブログリレー 2020』の8日目のエントリ『Amazon EventBridge』編でした。 明日 (8/14) はYuiの「Amazon CloudWatch」の予定です。お楽しみに!!






