LoginSignup
0
0

【データ基盤構築/AWS】AWSのEventBridgeでDMSが停止した時にSlackに通知を送るシステムを作る方法

Posted at

今回の課題

AWSのDMSが停止してしまった時に、
Slackにアラート通知を飛ばすシステムの構築を行うことにした。

AWSのLambdaとEventBridgeを使用した。

実装手順

以下の手順で、DMSが停止してしまったときにSlackに通知が飛ぶように実装した。

1)Lambda関数を作成

1)-1.Slackに通知を飛ばすコードを作成する

lambda_function.py
import json
import requests
import os

def send_slack_alert(type, title, text):

    alert_channel = "[アラートを飛ばしたいSlackチャンネルのURLの末尾の10桁の文字列]"
    mention_text = ""
    alert_color = "#F30100"
    WEB_HOOK_URL = "https://hooks.slack.com/services/*******************"

    requests.post(WEB_HOOK_URL, data=json.dumps({
        "channel": alert_channel,
        "text" : mention_text,
        "attachments": [{
            "color": alert_color,
            "text":  text
        }]
    }))

def lambda_handler(event, context):

    type = 'error'
    title = 'DMSが停止した時のアラート'
    text = 'DMSが停止しました。'
    send_slack_alert(type, title, text)
    return {
        'statusCode': 200,
        'body': json.dumps(target + 'stopped')
    }

1)-2.EventBridgeのイベントを読み込む権限を与える

上記のLambda関数を作成すると、 [Lambda関数名]-role-********というロールが同時に作成される。
そちらのロールに、 AmazonEventBridgeReadOnlyAccessというポリシーを持たせる。

2)Eventbridgeでルールを作成する。

2)-1.ルールの詳細を定義

以下のページでルールの名前説明を入力する。
ルールタイプは、イベントパターンを持つルールを選択する。
image.png

2)-2.イベントパターンを作成

次に進むと以下のようなページに飛ぶ。
ここで、DMSが停止するというイベントが発生した時に、
そのイベントを検知してくれる、イベントパターンを設定する。
image.png

イベントパターン作成の手順

上記のページで以下の手順で設定を行えば、
DMSが停止した時に検知イベントを検知するイベントパターンを設定することができる。

  1. 作成のメソッドをカスタムパターン(JSON エディタ) に指定する。
  2. 次にイベントパターンに、以下をペーストする。
{
  "source": ["aws.dms"],
  "detail-type": ["DMS Replication Task State Change"],
  "region": ["ap-northeast-1"],
  "detail": {
    "eventType": ["REPLICATION_TASK_STOPPED"],
    "category": ["StateChange"]
  }
}

サンプルイベントという項目で、検知したいイベントタイプを指定して、意図しているイベントを検知できているかテストをすることも可能です。

2)-3.ターゲットを指定する

次に進むと以下のような画面に遷移する。
機能という項目に、1)で作成したLambdaの名前を選択してターゲットに指定する。

これによって、Slackにアラートを送るためのLambda関数のトリガーに、EventBridgeのルールが設定される。
DMSが停止した際に発生するREPLICATION_TASK_STOPPEDというイベントをeventBridgeのルールが検知するようになる。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3838333537332f63383265346538302d633237392d303462392d333737662d3338646164623231346263642e706e67.png

あとは確認画面まで進み、ルールの作成をクリックすることで、DMS監視システムの構築が完了する。

まとめ

DMSのREPLICATION_TASK_STOPPEDというイベントを検知するEventBridgeのルールを作成して、
そちらをトリガーにLambdaが実行されるようにすることで、DMSが停止した時にSlackに通知が飛ぶようなシステムを構築することができた。

AWS EventBridgeでは、他にも色々なイベントパターンを検知することができそうなので、AWSの様々なリソースの動きを監視するのに便利そうだなと感じた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0