サーバーレスのイベントバスって何 ? 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 のリソースが必要な時に迅速に起動できるようにすることもできます。

img_awsgeek-eventbridge_00

このサービスは、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 を超えるサービスをサポートしています。
img_awsgeek-eventbridge_01

2. イベントバス

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

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

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

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

3. ターゲット

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

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

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

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

img_awsgeek-eventbridge_03

ルールの設定

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

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

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

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

img_awsgeek-eventbridge_04

次のコードは 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 で用意しているスキーマをそのまま利用することもできますし、独自のスキーマを作成してスキーマレジストリに保管して使用することもできます。 

img_awsgeek-eventbridge_05

イベントの検出

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

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

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

img_awsgeek-eventbridge_06

料金

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

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

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

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

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

img_awsgeek-eventbridge_07
img_awsgeek-eventbridge_full.

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

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

筆者紹介

photo_inaba

稲葉 智子

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

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

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

下記の項目で絞り込む
絞り込みを解除 ≫
フィルタ
フィルタ
1

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

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