AWS

AWS CloudWatch+SNS+Lambda+Serverless Framework+Chatwork API

 

Serverlessフレームワークを利用して

 

  • Lambdaアプリケーション, Lambda関数の作成
  • SNSの作成 + SNSとLambda関数との連携
  • 上記のデプロイ

これが出来ます。

 

通知の流れ

 

  • Cloudwatch Alarm → SNS → Lambda → Chatwork

 

動作

  1. Cloudwatch Alarmで設定したメトリクスに対して、警告時にSNSトピックスに通知する
  2. SNSはLambdaを叩く
  3. LambdaはChatwork APIを通してルームIDを指定したルームに投稿

 

 

クライアント側の作業をします

 

 

Python3のインストール

 

バージョンの確認

Python 3.7を確認

 

 

AWS CLI

 

AWS CLIのインストール

 

設定を行います

 

設定の確認

 

 

Node.js

 

 

パスを通す

 

 

 

 

バージョンの確認

 

 

Serverlessフレームワーク

 

インストール

 

Serverlessフレームワークのテストをします。

 

デプロイ

 

helloファンクションの実行

ヴァージニアリージョンにアクセスするとLambda関数がセットされており、Serverlessフレームワークできちんとデプロイできていることがわかります。

 

 

Chatwork通知用の関数を作成

@see https://dev.classmethod.jp/server-side/sls-lambda-chatwork/

クラスメソッドさんが既に作ってあるのでこれを頂きます。

 

必要なライブラリ「serverless-python-requirements」をインストール

 

コンフィデンシャル設定

IAMユーザでAdminfullAccessのポリシーのユーザを指定しています。

 

全体の設定

 

 

 

 

※Chatworkにrequestライブラリで送るのに必要なコード

 

 

 

必要なライブラリを記述します

 

 

デプロイ

 

デプロイによって下記が出来ています。

  • Lambda関数のデプロイ
  • SNSとLambda関数の連携とデプロイ

 

Cloudwatch Alarm

 

今回はRDSの容量を監視します。

 

Cloudwatch Alarmの作成を行います。

 

  • メトリクス
    「FreeStorageSpace」を選択します。
  • ディスク容量の閾値を設定します。
    FreeStorageSpace (FreeStorageSpace) <= 3000000000
    ※ 3000000000 = 3GB
  • アラームが次の時
    「警告」
  • SNSのトピック
    「sls-cloudwatch」

 

Chatworkに通知が行くかテストする

 

RDSの容量をCloudwatch Alarmの警告閾値まで減らします。

 

EC2からRDSに接続します

 

 

yuutestdbがターゲットです。

 

 

 

 

データを入れ込む

 

これでRDSの容量が圧迫されます。

通知されたら成功です。

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)