サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説

2020-09-01
AWS グラレコ解説

Author : 稲葉 智子

※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は Amazon Web Services, Inc. プリンシパル・テクニカル・エバンジェリスト、ジェリー・ハーグローブが運営しているサイトです。

みなさん、2019 年に発表された疎結合なアプリケーションやサービス間の通信に利用できるイベントバスをサーバーレスで提供する Amazon EventBridge という AWS サービスをご存知ですか ?

アプリケーションまたはサービスから送信されてきたイベントを複数のターゲットに配信することができるサービスなのですが、これだけ聞くと AWS サービスをよくご存知の IT エンジニアの方は、「おや ? どこかで聞いたことがあるサービスだぞ ?」と思われたかもしれませんね。

今回は、このAmazon EventBridge がどんなサービスなのか見ていきましょう!


Amazon EventBridge とは

Amazon EventBridge は、直接関連していない独自のアプリケーションや AWS 外で提供される SaaS (Software-as-a-Service) アプリケーション、および AWS のサービスから送信されるデータを配信先としてサポートしている AWS サービスにルーティングするイベントバスを Amazon EventBridge コンソールで登録設定するだけでご利用いただけるよう機能およびリソースを提供しているサービスです。

このサービスでは、イベントバスや独自のプログラムなどの実行に必要なサーバーやリソースは動的に割り当てられるため、このサービスを利用するために独自でサーバー構築やその保守管理といった作業をしていただく必要はありません。サーバーを意識することなく、アプリケーション開発に集中していただけます。

サーバーレスでフルマネージドのサービスなので、インフラストラクチャの管理やキャパシティのプロビジョンも不要で、必要に応じて自動でスケーリングまでしてくれるサービスとなっています。

また、AWS CloudFormation でも、Amazon EventBridge の一部のリソース (ルールや EventBusPolicy など) がサポートされていますので、CloudFormation テンプレートを作成しておけば、Amazon EventBridge のリソースが必要な時に迅速に起動できるようにすることもできます。

このサービスは、2019 年に発表された比較的新しいサービスなのですが、Amazon CloudWatch Events という既存サービスをベースに、さまざまなアプリケーションやサービスから送信されるデータを使用して簡単に AWS サービスに接続できるよう機能を拡張して作られたサービスなのです。なので、CloudWatch コンソールで設定したルールやイベントバスを Amazon EventBridge コンソールからもそのままご利用いただけます。

Amazon EventBridge では、SaaS パートナーと呼ばれる SaaS アプリケーションやサービスを提供している企業と統合しているので、SaaS パートナーを事前設定するだけでイベントソースとしてご利用いただけるようになりました。この機能が、Amazon CloudWatch Events にはない Amazon EventBridgeで追加された新しい機能になります。

ご利用中の SaaS アプリケーションやサービスが Amazon EventBridge でサポートされている場合は、イベントを受信するための接続設定を一からコードで記述したり、カスタムコードを追記したりすることなく、イベントの受信やフィルタリング、配信が行えるため、コードの記述にかかる時間を削減することができる、というメリットがあります。 (サポートされていなかった場合は、一からコードで記述が必要になります)

Amazon EventBridge では、ルールを使って受信メッセージをフィルタリングしたり、イベントの構造であるスキーマをコード内のオブジェクトとして使用しやすくする仕組みが提供されています。この 2 つを組み合わせて構築することができるので、カスタマイズがしやすい仕組みになっています。このルールとスキーマを利用する上で、次の 3 つが必要になります。

  1. イベントソース
  2. イベントバス
  3. ターゲット

これら 3 つの項目を一つ一つ見ていきましょう。


1. イベントソース

イベントソースとは、イベントの送信元であるアプリケーションやサービスのことを指します。このイベントソースには、次の 3 種類あり、イベントを受け取りたいアプリケーションやサービスの種類に応じて選べます。

  • SaaS パートナー
    SaaS アプリケーションを提供している AWS のパートナー企業です。Zendesk、Datadog、PagerDuty を含む、約 28 の SaaS パートナーから選択できます。また、はてな Mackerel、プレイド KARTE,Game Server Services も日本発のパートナーとして選択可能です。Amazon EventBridge コンソールのパートナーイベントソースで事前設定をするだけでイベントソースとして簡単に使用できます。

    注意:事前設定の手順は各 SaaS パートナーごとに異なりますので、各社のインストラクションに従って設定する必要があります。

  • 独自のアプリケーション
    Python、Node.js、Java、Go などを含む開発言語で作られたアプリケーションをサポートしています。前述以外にも複数の開発言語をサポートしていますので、ご利用中の開発言語が Amazon EventBridge でサポートされているかどうか知りたい場合は、担当 SA もしくはこちらにお問い合わせください。

  • AWS サービス
    イベントソースとして、AWS Lambda、Amazon SQS、Amazon SNS、AWS Step Functions、Amazon Kinesis Data Streams などを含む 90 を超えるサービスをサポートしています。

2. イベントバス

Amazon EventBridge のイベントバスには、アカウントにデフォルトで作成されるイベントバスに加えて、パートナーイベントバスとカスタムイベントバスの 2 種類のイベントバスを登録できます。イベントソースのタイプに合わせたイベントバスを選択する必要があります。

  • パートナーイベントバス (複数登録可)
    AWS 外で提供される SaaS アプリケーション用のイベントバスです。パートナーイベントソースの事前設定が完了していると、このイベントバスを使用できます。

  • カスタムイベントバス (複数登録可)
    独自のアプリケーション用のイベントバスです。カスタムイベントバスを使用するには、Amazon EventBridge コンソールで事前に登録が必要です 。

  • デフォルトのイベントバス
    AWS サービスと独自のアプリケーションの両方に使用できるイベントバスです。主に AWS サービスのイベントとの関連付けに使用されるため、アカウントに対して必ず 1 つ自動的に作成されます。

3. ターゲット

ターゲットとは、イベントパターンに一致したイベントの配信先のことです。ターゲットは、イベントパターンに一致するか、スケジュールがトリガーされた時に呼び出され、配信されてきたイベントを受け取ります。

選択したターゲットによりバーションやエイリアスを指定したり、イベントをターゲットに送信する前に、一致したイベントの一部のみを渡したり、イベントの代わりに定数で返したり、イベントテキストを変更したりしてイベントをカスタマイズすることもできます。

Lambda 関数、Code Pipeline、SQS キューなどを含む 15 を超える AWS サービスがターゲットとして提供されています。

ルールの作成時に登録できるターゲットは最大 5 つです。


ルールの設定

ルールでは、 イベントソース、 イベントバス、ターゲットの情報に加えて、イベントを検出するためのパターンの定義 (イベントパターン / スケジュール) とタグ付けを設定します。また、同じイベントに一致するルールを複数作成できるため、さまざまなマイクロサービスやアプリケーションが特定のフィルターに基づいてイベントを照合できるよう設定することもできます。

Amazon CloudWatch Events を利用している方はご存知かと思いますが、イベントを検出する方法には、イベントパターンとスケジュールの 2 パターンが用意されています。

イベントパターンでは、サービスごとの事前定義パターンとカスタムパターンから選択していただけます。サービスごとの事前定義パターンは、Amazon CloudWatch Events では、AWS サービスしか選択できませんでしたが、Amazon EventBridge では、AWS サービスに加え、SaaS パートナーのアプリケーションやサービスからも選択可能になっています。

カスタムパターンは、Amazon CloudWatch Events と同じで、独自で作成したイベントパターンを適用したい場合に使用します。このパターンを選択するとイベントパターンの入力欄が有効になり、独自のコードを保存することができます。このコードは JSON で記述できます。(イベントパターンの構造は、一致するイベントと同じで、フィルタリングするイベントによく似た構造になっています)

次のコードは JSON のサンプルコードです。よく使われるフィールドで構成されていますので、独自でイベントを作成する場合の参考にしてください。このサンプルコートは、Amazon EventBridge のユーザーガイドでも公開されています。

<サンプルコード>

{
  "version": "0",
  "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
  "detail-type": "EC2 Instance State-change Notification",
  "source": "aws.ec2",
  "account": "111122223333",
  "time": "2017-12-22T18:43:48Z",
  "region": "us-west-1",
  "resources": [
    "arn:aws:ec2:us-west-1:123456789012:instance/ i-1234567890abcdef0"
],
"detail": {
  "instance-id": " i-1234567890abcdef0",
  "state": "terminated"
  }
}

スケジュールは、指定したタイミングで定期的にルールを起動させたい場合に使用します。固定速度と Cron 式の 2 つから選択できます。

固定速度では、分、時間、日単位で設定することができ、Cron 式では、Unix の一般的な Cron 構文を使ってスケジュールを簡単に設定できます。(Amazon CloudWatch Events で使用されているのと同じ機能です)

また、ルールにタグ付けしてリソースを管理することもできます。オプションなので、必ず設定する必要はありませんが、タグ付けしておくとあとでリソースが検索しやすくなるので、ルールの設定時に一緒に登録しておくと良いでしょう。


スキーマレジストリとスキーマ

スキーマレジストリは、スキーマを保管する箱のようなものです。このレジストリの中に保管されるスキーマは、イベントスキーマともいいます。AWS サービス用のイベントスキーマは、デフォルトで用意されており、AWS イベントスキーマレジストリで保管されています。

スキーマレジストリでは、独自のレジストリをカスタムレジストリとして作成でき、最大 10 個まで登録できます。このレジストリを使って独自で作成したスキーマを保管したり、Amazon EventBridge で使用しているスキーマを 1 つのレジストリにまとめて管理したりすることができ、スキーマの整理にも活用できます。

スキーマレジストリに保管されるスキーマとは、イベントバスに渡されるイベントの構造と内容を定義したものです。コードを記述してイベントに対応するためには、イベントデータのタイトル、形式、各要素の検証ルールなど、イベントスキーマに記載する情報に何があるのかを知る必要がありますが、Amazon EventBridge では、スキーマのテンプレート (JSON 形式) を用意していますので、このテンプレートをカスタマイズして作成することができます。AWS で用意しているスキーマをそのまま利用することもできますし、独自のスキーマを作成してスキーマレジストリに保管して使用することもできます。 


イベントの検出

Amazon EventBridge コンソールで、ルールやスキーマをアクティブにしてから「検出を開始する」ボタンを押すと、設定情報をもとにイベントの検出が開始されます。イベントがルールと一致した回数、ターゲットが呼び出された回数などはログに記録され、 Amazon CloudWatch Logs Insights でログを分析したり、Amazon CloudWatch のメトリクスを使用してイベントバスをモニタリングしたりすることがきます。Amazon CloudTrailでは、Amazon EventBridge API に対する呼び出しをモニタリングして、運用監査およびリクス監査を行うこともできます。

また、IAM とも統合されているので、イベントやリソースにアクセスできるユーザーの管理やアクセス許可の制御ができ、Amazon EventBridge の運用をセキュアに保つことができます。

さらに、GDPR、SOC、ISO、DoD CC SRG、FedRamp、HIPAA にも対応しているので、コンプライアンスにも対応可能です!


料金

気になる Amazon EventBridge のコストですが、イベントバスで検出されたイベントとスキーマの検出時に取り込まれたイベントに対して課金されます。スキーマレジストリの利用自体は無料です。 

東京リージョンでは、次の料金設定になっています。詳細はこちらを参照してください。

  • イベントバスで検出されたイベントの場合
    AWS サービスから検出 :  無料
    上記以外から検出 :  100 万件につき、1.00 USD

  • スキーマの検出時に取り込まれたイベントの場合
    100 万件につき、0.10 USD

※スキーマの検出機能には、500 万件までの無料利用枠有り

例) AWS 外で提供される SaaS アプリケーションをイベントソースとして使用したとします。そのイベントソースから毎月 500 万件のイベントをイベントバスが検出して、かつスキーマの検出時に取り込まれたイベントも毎月 500 件ほどあるとします (東京リージョン使用)。

さて、月々の Amazon EventBridge の使用料金は一体いくらに。。。

イベント: (500 万件 / 月 ➗ 100 万件 / 月) x 1.00 USD / 100 万件 = 5.00 USD
スキーマ: (500 万件 / 月 ➗ 100 万件 / 月) x 0.10 USD / 100 万件 = 0.50 USD ← 無料利用枠の範囲内

となり、この例では、スキーマが無料利用枠の範囲内に収まるため、Amazon EventBridge の月々の支払い額が 5.00 USD になります。サービスの利用に対する課金だけなので、無駄がなくていいですね。

実際に 1 日どれくらいのイベントがお使いのアプリケーションや SaaS アプリケーションから送信されるのかを確認してから、どれくらいの請求額になるのか試算してみると良いですね。

※上記は、2020 年 8 月末時点の内容および料金です。記事内の情報と AWS EventBridge 料金ページに記載される料金に相違があった場合は、AWS EventBridget 料金ページの情報が優先します。


それでは、最後に全体図をご覧ください。

いかがでしたでしょうか。今回は、Amazon EventBridge について解説しました。このサービスに少しでもご興味を持っていただけますと幸いです。

Amazon EventBridge の導入をご検討されている場合は、こちらの製品ページも合わせてご覧ください

この連載記事のその他の記事はこちら

選択
  • 選択
  • 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
  • サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
  • 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
  • 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
  • AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
  • コンテナを使ってモノリスを分割する方法をグラレコで解説 »
  • クラウドへ移行する理由とそのステップをグラレコで解説 »
  • Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
  • サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
  • サーバーレスで SaaS を構築する方法をグラレコで解説 »
  • 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
  • クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
  • 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
  • アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
  • わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
  • 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
  • Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
  • 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
  • ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
  • 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
  • カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
  • GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
  • IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
  • 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
  • サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
  • データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
  • 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
  • リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
  • アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
  • データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
  • アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
  • AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
  • 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
  • キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
  • 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
  • ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
  • AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
  • リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
  • ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
  • オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者紹介

稲葉 智子
アマゾン ウェブ サービス ジャパン合同会社
技術統括部 テクニカルライター

AWS クラウドのサービスに関しては入社と同時に勉強開始。好きな AWS サービスは、ローカリゼーションも担当しているので、Amazon Translate。AWS DeepRacer や AWS DeepComposer にも興味があります。趣味は習い事のハープとカフェ巡り。AWS では猫好きが多いのですが、私は犬好きで、ウェルシュ・コーギー・ペンブローク Lover です。

AWS のベストプラクティスを毎月無料でお試しいただけます

さらに最新記事・デベロッパー向けイベントを検索

下記の項目で絞り込む
1

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する