OPS

CloudWatch EventsからEventBridgeへの変更でできるようになった事と、実行例

2022.10.13

本記事のポイント

筆者が普段AWS環境の監視を構築する上で大変お世話になっているAmazon CloudWatch Events(以下、CloudWatch Events)ですが、Amazon EventBridgeへと拡張されました。

今回はそんなAmazon EventBridgeの概要や拡張される事でできるようになった事をご紹介したいと思います。また、今までCloudWatch Eventsで行っていたEC2の状態変更における通知を、Amazon EventBridgeでも実行できるのか試してみました。ぜひご覧ください。



はじめに

AWSの環境の構築、運用監視を行っている方は、CloudWatch Eventsはもちろんご存知だとおもいます。かくいう筆者もCloudWatch Eventsにはとてもお世話になっており、監視を行う上でかかせない存在となっておりました。

CloudWatch EventsがAmazon EventBridgeに変わりますよーというインフォメーションがCloudWatch Eventsの画面の上でチラチラしているのは知っていたのですが、久しぶりに設定を追加しようとCloudWatch Eventsの画面を開いたところ「 CloudWatch Events はEventBridge となりました」の文字が。。。

CloudWatch Events はEventBridge となりました

もちろんCloudWatch Eventsを引き続き使用することはできますが、AWS的にはEventBridgeを推奨してるみたいだし、そろそろきちんと確認しておかなければ!

ということで勉強がてら解説記事としてご紹介いたします。

Amazon EventBridgeとは?

まず、Amazon EventBridgeの特徴についてお伝えします。

EventBridgeとはAWSのサービスやZendesk、DatadogなどのSaaSアプリケーション、独自で作成したアプリケーションなどのイベントを使用してイベント駆動型アプリケーションを構築することを容易にするサービスです。

EventBridgeの構成図

※図 https://aws.amazon.com/jp/eventbridge/ より引用

イベント駆動型アプリケーションは従来の要求駆動型モデルと違い、サービスを疎結合化(それぞれのサービスがイベントルーターのみを認識)することで1つのサービスに障害が発生しても残りのサービスを稼働し続けることができます。
そのため、スケーリングやエラーの個別化、開発スピードのアップが可能になります。

詳しくは以下公式サイトをご確認ください。

参考サイト
https://aws.amazon.com/jp/eventbridge/
https://aws.amazon.com/jp/event-driven-architecture/

Amazon EventBridgeでできるようになったこと

続いて、一番気になるEventBridgeでできるようになったことは何でしょうか。

サードパーティ製品との連携が可能になった

従来はAWS内のイベントや、cron機能のイベントだけが利用可能でしたが、AWSのサービだけではなくSaaSアプリケーションや独自に作成したアプリケーション間でのイベントをルーティングすることができます。

イベントをルーティング

※図 https://aws.amazon.com/jp/blogs/compute/using-api-destinations-with-amazon-eventbridge/ より引用

マルチリージョンのイベント転送が可能になったことでイベントを集約することができる

1. EventBridgeではグローバルエンドポイントを使用できるようになりました。
リージョンのサービス状況に応じてプライマリ、またはセカンダリリージョンのイベントバスにイベントをルーティングします。

2. IngestionToInvocationStartLatencyと呼ばれる新しいEventBridgeメトリックにより、イベントを処理する時間が明確になります。

この2つの機能によりイベントの取り込みをセカンダリのイベントバスに自動的にフェールオーバーする機能が提供されます。

フェールオーバーする機能

※図 https://aws.amazon.com/jp/blogs/compute/introducing-global-endpoints-for-amazon-eventbridge/ より引用

CloudWatch EventsでやっていたことをAmazon EventBridgeでやってみた

さて、新しい機能について触れてきましたが、今までやってきたことはどう実現するの?
結果から言うと、簡単に実現することができました。

今回は簡単なところでEC2の状態変更における通知を設定してみたいと思います。

1. EventBridgeの管理画面を表示し、「ルールを作成」をクリックします。

ルールを作成」をクリック

2. 名前にルール名を入力し「次へ」をクリックします。

名前にルール名を入力

3. イベントパターンにてサービス、イベントタイプを選択し、「次へ」をクリックします。
※サンプルイベントを選択するとJSON形式のサンプルを確認できますので、詳しく設定したい場合は参考にしてください。

イベントパターンにてサービス、イベントタイプを選択 「次へ」をクリック

4. ターゲットを選択し「次へ」をクリックします。
※ここではターゲットにSNS トピックを指定し、メールを受信することにします。

ターゲットを選択し「次へ」をクリック

5. タグを指定することができますが、ここでは何も指定せず「次へ」をクリックします。

何も指定せず「次へ」

6. 入力した内容が表示されるので再度確認し「ルールの作成」をクリックします。

再度確認し「ルールの作成」をクリック

7. 「ルールを正常に作成しました」の表示が確認できればOKです。

表示が確認できればOK

ルールの作成はこれだけです。
ステップに沿って作成することができました。

それではEC2インスタンスを起動してルールが動作しているか確認してみます。

EC2インスタンスを起動してルールが動作しているか確認 EC2インスタンスを起動してルールが動作しているか確認

EC2インスタンスを起動したところ上記のメールを受信しました。
EC2インスタンスのステータスがpendingを経てrunninngへと遷移したことがわかると思います。

参考サイト
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/CloudWatch-Events-tutorial-CloudWatch-Logs.html
https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-log-ec2-instance-state.html

終わりに

今回は、CloudWatch Events から機能が拡張した Amazon EventBridge についてご紹介いたしました。

新しい機能はなかなかとっつきにくい印象がありますが、実際に触ってみるととても簡単に使用できることがわかりました。UIも直感で使用できますし、システムの拡張性が確保でき安定稼働の一助になりますので、ぜひ触ったことがない方も使用してみてください。

また、AWS のデフォルトサービスイベントは無料ですので是非試してみて使い勝手を確認してみてください。
https://aws.amazon.com/jp/eventbridge/pricing/