COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

Amazon EventBridgeでのイベント駆動自動化ワークフロー

Amazon EventBridgeとは何か

Amazon EventBridgeは、AWSのサービスやSaaSアプリケーション、独自のアプリケーション間でイベントを連携させるためのサービスです。簡単に言えば、異なるシステム間で「こういうことが発生した」という情報をリアルタイムに伝える仕組みを提供するサービスです。

イベントとは?

ここでいう「イベント」とは、「システム内で発生した出来事」のことです。たとえば、ECサイトで商品が購入された、データベースに新しいレコードが追加された、EC2インスタンスが起動された、といったものがイベントになります。また、システムを「疎結合」にするためにもAmazon EventBridgeは重要です。たとえば、Aシステムで発生したイベントをBシステムに伝えたいとき、直接Bに通知するのではなく、Amazon EventBridgeを使えば、Aは「イベントを発生させるだけ」、Bは「イベントを受け取って処理するだけ」で済みます。これにより、ABが直接依存せず、片方のシステムで障害が発生しても影響が及びにくい、障害性が高く柔軟なシステムを構築できます。

イベント駆動型アーキテクチャとは?

イベント駆動型アーキテクチャとは、システムの動作を「イベント」に基づいて決定するシステム設計のことです。イベントという出来事を中心にシステムが動いている、というイメージを持っていただければ大丈夫です。

たとえば、スマートホームのシステムを考えてみましょう。

  1. ドアが開いた(イベント発生)
  2. 照明が自動で点灯する(イベントに反応して動作)
  3. エアコンがONになる(別のイベントに反応)

このように、何かの出来事が起きたときに、それに応じた処理を実行する仕組みがイベント駆動型アーキテクチャです。Amazon EventBridgeを使えば、クラウド上でこのような仕組みを簡単に実現できます。イベント駆動型アーキテクチャは、サーバーレスアプリケーションや、IoT(モノのインターネット)など、さまざまな種類のシステムで使用できます。

AWSでの自動化とオーケストレーションを活用して、スピーディーな移行・構築作業を実現するスタイルズのAWS導入サービスはこちら→

 

Amazon CloudWatch Eventsとは何が違う?

Amazon EventBridgeは、従来のAmazon CloudWatch Eventsの進化版です。以下の点で違いがあります。

  • 連携できるサービスの拡張…AWSのサービスだけでなく、外部SaaSとの連携が可能に。
  • リージョン間のイベント転送…他のリージョンで発生したイベントを受け取ることができる。
  • スキーマレジストリの追加…イベントの構造をカタログ化し、他人が作成したイベントでも見やすくすることで、開発をしやすくできる。

簡単に言えば、CloudWatch Eventsの機能を拡張し、より実用的なイベント管理ができるようになったのがEventBridgeです。

Amazon EventBridgeの特徴

Amazon EventBridgeには、以下のような特徴があります。

  • インフラ管理が不要完全マネージドサービスであるため、イベントの管理や処理のためにサーバーを用意したり管理したりする必要がありません。これにより、インフラの運用負担を減らしながら、イベント駆動型のアーキテクチャを構築できます。
  • 他のサービスとの連携…AWS内の各サービスとの連携は勿論のこと、SaaSアプリケーションとも連携可能となっています。具体的には、Datadog、Zendesk、Shopifyなどの外部サービスと簡単に統合できます。これにより、AWSのリソースだけでなく、さまざまなアプリケーションとのイベントのやり取りが可能になります。
  • 柔軟なルール設定…「特定の条件を満たすイベントのみを処理する」といった細かいフィルタリングが可能です。これにより、不要なイベント処理を減らし、効率的なシステムを構築できます。
  • スケーラブルで大規模な処理も可能…数百万件のイベントをリアルタイムで処理することができます。システムの規模に関わらず、高速かつ安定したイベント管理が可能です。

Amazon EventBridgeの構成要素

Amazon EventBridgeは、以下の4つの要素から構成されています。これらの4つの構成要素が連携することで、AWSにおいて効率的なイベント駆動型アーキテクチャを実現できます。

イベントバス

イベントバスは、イベントを受け付けるためのハブの役割を持ちます。イベントバスに登録されたイベントは、適切なターゲットに転送されます。AWSでは、デフォルトのイベントバスのほかに、カスタムイベントバスを作成することもできます。これにより、用途に応じたイベントの管理が可能になります。

イベントソース

イベントソースとは、イベントを発生させるAWSサービスやSaaSアプリケーション、カスタムアプリケーションのことです。たとえば、Amazon S3AWS LambdaAmazon EC2などがイベントソースになり得ます。外部SaaSのイベントを直接EventBridgeに流すことも可能で、クラウドサービス間の連携が容易になります。

ルール

ルールは、どのイベントをどのターゲットに送るかを決めるためのフィルターの役割を果たします。たとえば、「EC2インスタンスの起動イベントのみをLambda関数に転送する」といった設定が可能です。ルールを使うことで、イベントの分類やルーティングを簡単に設定できます。

ターゲット

ターゲットとは、イベントを受け取って処理するサービスのことです。AWS LambdaAmazon SNSAWS Step Functionsなど、多様なターゲットにイベントを転送できます。例えば、S3にファイルがアップロードされたことをトリガーに、Lambda関数を実行してデータを処理する、といったワークフローを簡単に構築できます。

AWSでの自動化とオーケストレーションを活用して、スピーディーな移行・構築作業を実現するスタイルズのAWS導入サービスはこちら→

 

Amazon EventBridgeの使い方の概要

Amazon EventBridgeの基本的な使い方を理解するために、まず全体の流れを押さえましょう。

  1. イベントパターンの作成どのようなイベントをキャッチするのかを定義します。例えば、「EC2インスタンスが起動した場合」や「S3に新しいオブジェクトがアップロードされた場合」などの条件を指定できます。
  2. ルールの作成キャッチしたイベントをどのように処理するかを決めます。特定のイベントを特定のターゲットに送信するためのルールを設定することで、意図した動作を実現できます。
  3. ターゲットの設定ルールに基づき、イベントの通知先を決めます。例えば、Amazon Lambda関数、Amazon SNSトピック、AWS Step Functions など、多様なサービスと連携が可能です。
  4. イベントの送信と処理イベントが発生すると、EventBridgeがそれを処理し、設定したターゲットに通知します。例えば、S3に新しいファイルがアップロードされると、Lambda関数が自動的に呼び出され、ファイルの加工処理を行う、というようなフローを構築できます。

では、具体的にユースケースを見ていきましょう。

ユースケース:S3に新しいファイルがアップロードされたら処理を実行

  1. S3が新しいファイルのアップロードをイベントとして発生させる。
  2. EventBridgeがそのイベントをキャッチ。
  3. ルールによってLambda関数に転送。
  4. Lambdaがファイルを処理(例:サムネイル生成やメタデータ解析など)。

このように、EventBridgeを利用すれば、AWSのさまざまなサービスと連携しながら、効率的なイベント駆動型のアーキテクチャを構築することができます。

また、カスタムイベントを発行することも可能です。自社アプリケーションが独自のイベントを発行し、EventBridgeを通じて他のAWSサービスと連携させることで、システム全体の柔軟性が向上します。

Amazon EventBridgeの料金

Amazon EventBridgeの料金は一か月ごとの従量課金制です。少々複雑な料金体系になっていますが、大規模に利用しない限りは高額な課金は発生しないと考えていいでしょう。

  • イベントの数イベントバスに公開されたイベントの数や、イベントバスから任意のWebベースのアプリケーションにイベントを送信するケースに応じて課金されます。また、イベントを再送信する場合も課金が発生します。リージョンをまたぐイベントのやり取りには追加コストが発生します。
  • スケジューラーの数…週次、日次など、スケジューラを設定してプログラムを呼び出した場合、呼び出し回数に応じて課金が発生します。なお、月間1400万回の呼び出しまでの無料利用枠があり、それを超えた場合に課金が発生されます。
  • スキーマレジストリ…イベントをスキーマに取り込む際に、月間500万件のイベントを超えた分に関し課金が発生します。

まとめ

Amazon EventBridgeは、AWS内外のサービスを連携するための強力なイベント管理サービスです。イベント駆動型アーキテクチャを採用することで、システム間の依存関係を減らし、拡張性の高い設計が可能になります。CloudWatch Eventsの進化版として、SaaS連携やクロスリージョン対応など、より柔軟なイベント処理が実現できます。多様な機能があるため、使いこなすにはAWS専業ベンダーのアドバイスも非常に有効です。