本記事では、EventBridgeとLambdaを使用して、AWS上で発生したイベントをTeamsのチャネルに通知する方法について解説いたします。
この方法を使用すれば、監視したいイベントの即時検知を行うことができ、インシデントへの対応速度の向上にも繋がります。
EventBridgeとは
EventBridgeとは、AWSリソースやアプリケーションのイベントを使用して、イベント駆動型のアプリケーションを構築することができるサービスとなります。
今回は、EventBridgeを使用して「IAMロールの作成」イベントをLambdaに連携し、イベントの内容を整形してTeamsに通知する仕組みを作成していこうと思います。
実際にやってみよう
今回は、以下の手順でEventBridgeルールの作成とLambda関数の作成を実施致します。
- 受信用Teamsチャネルの準備
- Lambda関数の作成
- EventBridgeルールの作成
今回構築するシステムの構成図は以下の通りです。
「IAMロール作成」イベントの内容をLambdaに連携し、イベントの内容から通知のメッセージに組み込む値を取得し、Teamsに通知する構成とします。
受信用Teamsチャネルの準備
通知を受信するTeamsのチャネルで設定を行います。事前に専用のTeamsのチャネルを作成してから以下の手順を実施して下さい。
(1)通知を受信するTeamsチャネルの右上のメニューから「コネクタ」を選択します。
(2)「Incoming-Webhook」を検索し「構成」を選択します。
(3)任意の名前を入力し「作成」を選択します。
(4)WebhookURLをコピーし「完了」を選択します。コピーしたWebhookURLは控えておいて下さい。
Lambda関数の作成
今回は、バージニア北部のリージョンにLambda関数を作成します。
(1)「関数の作成」から「関数名」と「ランタイム」を設定して作成を行います。今回はランタイムに「Python 3.10」を設定します。
(2)作成したLambda関数のコードに以下のコードを貼り付けます。
今回は、必要最低限の処理のみを記述したコードを使用します。コード内のwebhookurlには「受信用Teamsチャネルの準備」手順でコピーしたURLを貼り付けてください。
上記のコードでは、IAMロール作成時に発生するイベント文(JSON形式)から通知のメッセージに使用する値を取得して、メッセージに組み込みを行い、指定したWebhookのURL宛てにメッセージを送信しています。
今回は、イベント名と作成されたIAMロール名、作成者のARNをメッセージに組み込みます。
AWSのイベントの内容は、APIごとに内容が異なりますので、事前にイベントの内容を調べておくことを推奨いたします。
(3)Lambda関数の設定タブから「一般設定」>「編集」を押下します。次に表示された画面で「タイムアウト」時間を設定します。今回は余裕をもって1分間に設定します。
EventBridgeルールの作成
IAMロール作成のイベントを監視し、そのイベントが発生した際のイベント内容をLambdaに連携するルールを作成します。今回は、バージニア北部のリージョンでEventBridgeルールを作成します。
(1)EventBridgeルールから「ルールを作成」を選択し、任意の名前を入力します。また「ルールタイプ」では、イベント駆動型のルールを作成する場合には「イベントパターンを持つルール」、スケジュール駆動型のルールを作成する場合には「スケジュール」にチェックを入れます。
今回は、イベント駆動型のシステムとなるため「イベントパターンを持つルール」にチェックを入れて下さい。
(2)イベントパターンに検知するイベントのフィルター設定を行います。
今回は、「IAM」サービスの「CreateRole」(IAMポリシー作成時に実行されるAPI)を検知するため、以下の通りに設定します。
(3)ターゲットの設定から「Lambda関数」を設定し「Lambda関数の作成」手順で作成したLambda関数を指定します。
(4)設定内容に誤りがないことを確認し「ルールの作成」を選択します。
動作確認
(1)任意の名前でIAMロールの作成を行います。
(2)Teamsのチャネルに通知が送られていることを確認して下さい。
おわりに
今回は、EventBridgeを使用してAWS上で発生したイベントをTeamsに通知する仕組みを紹介致しました。
本記事では、IAMロール作成イベントを検知・通知する仕組みを構築しましたが、他にも、意図しないユーザーからのログインイベントを監視したり、EC2の停止や再起動を監視したりと、様々なアクションを監視することができます。
また、通知の送信先にはSlack等を設定することもできますので、使い慣れたチャットサービスへの通知を行うことも可能です。皆さん是非ともお試し下さい!
内田 順也(日本ビジネスシステムズ株式会社)
プロフェッショナルサービス事業本部に所属。AWSに関連する運用支援業務を担当しております。 最近ではセキュリティ周りのAWSサービスの学習に力を入れてます!
担当記事一覧