BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】EventBridgeでCloudWatchとLambdaをつなぐ!

はじめに

こんにちは!

BFT名古屋支店・新卒のゴンザレスです。

EventBridgeを使ってAWSのサービス同士を繋ぎたい!そんな時どのような設定が必要なのでしょうか。

今回はCloudWatchで発生したアラームをEventBridgeが検知し、Lambdaを実行するという構成を想定の下、設定方法を紹介していきます。

構成を図にすると以下のようになります。


前提

  • CloudWatchのアラームが設定済みであること。

  • 連携するLambdaが作成済みであること。

今回行う設定は二つです。

①EventBridgeでルールを作成する。

② Lambdaでトリガーを追加する。

まずは①の設定から説明していきます。


EventBridgeのルールを追加

AWSにログイン後、コンソール画面から「Amazon Event Bridge」→「ルール 」→「 ルールを作成 」の順に押下し、EventBridgeのルールを作成します。

「名前」、「説明」の欄は任意です。

今回イベントバスは「default」を選択します。AWSの既存サービス同士(CloudWatch、Lambdaなど)をEventBridgeで連携する際に「default」を選択します。

ルールタイプは「イベントパターンを持つルール」を選択します。

今回はCloudWatchのアラームを検知するためイベントを定義しますが、Amazon EventBridge Schedulerを使用して指定した日時や一定間隔でイベントを発生させたい場合は、「スケジュール」を選択します。

「次へ」を押下します。

イベントソースの選択

次にイベントソースで「AWSイベントまたはEventBridgeパートナーイベント」を選択します。 AWSのサービス(CloudWatch、Lambdaなど)を使用する場合は上記の選択となります。

サンプルイベントーオプション

この後説明するイベントパターンの作成を行う際、必要であれば入力します。

該当するサンプルイベントを選択すると、イベントパターンがjsonで作成されます。

こちらはjsonの見本が作成されるだけのため、スキップしてOKです。

作成のメソッドを選択

「パターンフォームを使用する」を選択します。 自分でJSONを記述してカスタムしたい等の場合は、その他の選択肢を選びます。 今回はEventBridgeが提供するテンプレートのイベントパターンを使用します。

イベントパターン

今回はCloudWatchのアラームを検知するため、イベントソースで「AWSのサービス」、AWSのサービスで「CloudWatch」、イベントタイプで「CloudWatch Alarm State Change」を選択します。 すると、以下画像のようにイベントパターンが作成されます。 「次へ」を押下します。

上記画像のデフォルトで作成されたイベントパターンを以下のように書き加えました。

今回はCloudWatchのアラームを検知するため、「alarmname」と「value」を追加しています。

前提としてCloudWatchのアラーム名は「testkey-alarm」と設定しているため、以下画像の様に記載しています。 「次へ」を押下します。

ターゲットタイプ

ターゲットタイプで「AWSのサービス」を選択します。 今回はEventBridgeとLambdaを繋ぐ設定のため、ターゲットには「Lambda関数」を選択します。 機能には、指定するLambda名を選択します。 「次へ」を押下します。

タグを設定 - オプション

必要であればキーと値を設定し、「次へ」を押下します。

「ルールの作成」を押下し、以下画像のようにルール名が表示されれば設定は完了です。

次に②の設定について説明します。

Lambdaのトリガーを追加

まずは、AWSにログイン後のコンソール画面から「Lambda」 → 「関数」 → 「対象のLambda関数名 」→ 「+トリガーを追加」の順に押下し、トリガーを追加します。

「ソースを選択」でEventBridgeを選択します。 Ruleは「Existing rules」を選択し、①で作成したEventBridgeのルール名を選択します。 「追加」を押下し、トリガーの追加は完了です。

以下のような画面になれば設定が完了です!

終わりに

EventBridgeでサービス同士を繋げる方法を紹介しました。EventBridgeでサービス同士を繋げるにはEventBridgeで「ルール」を追加し、連携先であるAWSのサービス(今回の場合Lambda)でトリガーを設定する必要があります。 以上ここまで読んでいただき、ありがとうございました。