2
Help us understand the problem. What are the problem?

posted at

Organization

Amazon EventBridge の 使い方

Cloudwatch alertを使って、EC2のオートリカバリや、SNS -> lambdaを介してSlack通知など、便利に使っていたのですが、連携できるサービスが限られているため、EventBridgeを使ってみます。

EventBridgeとは

EventBridgeは、AWS外のSaaSやAWSサービスで発生した様々なEventを受け取って、LambdaやStep Functions などの指定したターゲットにEventを連携することができるサーバレスのマネージドサービスです。EventBridgeという名称そのままな感じですが、Eventソースとターゲットの自由度がかなり高いので、アイデア次第で色々できそうな感があります。

EventBridgeの設定方法

「Cloudwatch alertのイベントを受け取って、lambdaに連携する」というEventBridgeを作成してみます。まずは、Amazon EventBridge > ルール > ルールを作成、でEventBridgeのルールを作ります。EventソースにするCloudwatch alertと、ターゲットにするlambdaは作成済みとします。

EventソースとなるCloudwatch alertのアラーム設定には、トリガーが設定されている必要はない。あくまでAWS Eventの発生を契機にするため。

ルールタイプの設定

ルールタイプで、イベントパターンとスケジュールが選択できます。スケジュールの方は、cron的に一定間隔や指定日時でイベント駆動させるときに使えます。今回は、イベントパターンを選択します。

スクリーンショット 2022-05-02 15.17.11.png

起動契機には、イベント起動とスケジュール(cron)起動が選択可能

イベントソースとイベントパターンの設定

次にイベントソースを選択します。Cloudwatch alertにしたいので、AWSイベントを選択します。
スクリーンショット 2022-05-02 15.17.40.png

次にイベントパターンをjsonで記述します。alarmNameには、任意のCloudWatch alarmのアラーム名を指定します。stateを指定することで、ALARM時のみイベント発行されるようにします。なお、stateを指定しなかった場合は、全てのstate changeでイベント発行されます。このjsonは拾いたいイベントのフィルタのようなイメージですね。

{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"],
  "detail": {
    "alarmName": ["Event_Test"],
    "state": {
      "value": ["ALARM"]
    }
  }
}

このイベントパターンを書くためには、AWSサービスの各種イベントが、どんなjsonデータ構造なのかという話になります。ここを参照すると各種イベントのjsonサンプルがあるので参考にしながら記述すれば良いです。または、下記のサンプルイベントから、参照することができます。

スクリーンショット 2022-05-02 16.44.33.png

公開されているサンプルイベントを参考に、イベントパターン(拾いたいイベントのフィルタ)を記述する

ターゲットの設定

最後にターゲットを選択します。事前に作成しておいた、lambdaに連携しています。ターゲットは複数選択できるので、lambdaとSNSを両方指定するなども出来ます。
また、ターゲットに設定したlambdaで、連携されたjson形式のEvent情報を参照することも可能です。

スクリーンショット 2022-05-02 16.12.20.png

作成完了

「ルールの作成」で完了。
かなり簡単に出来ますね。ルール作成した時点で、EventBridgeは有効になっています。

イベント駆動型なので、無限ループ(再帰呼び出し)にならないように注意

動作確認

発行されたイベントは、Cloudwatchでメトリクス化されています。
スクリーンショット 2022-05-02 17.02.24.png

ターゲットがlambdaの場合は、lambdaのログでも確認可能ですね。

まとめ

Event Bridgeは、イベントソース、ターゲットの選択肢が多く、Cloudwatch alertより容易に出来ることのカバー範囲が広いです。単純なalert(SNS連携)ならばCloudwatchで十分、自動復旧等のためにSystem managerやStep functions、lambda等に連携するならEvent Bridgeを使う、と適材適所ですね。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?