AWS LambdaでサーバーレスにEC2メンテナンスをslackに通知する 〜その1〜
はじめに
直近の業務で下記案件に対応する機会がありました。
EC2メンテナンスイベントが、英語のメールで通知されるだけじゃ見落としがちなのでslackに通知したい
色々な方法が考えられますが、せっかくなので興味があったAWS Lambdaを使ってみました。
手順が多かったので、数回に分けて書いていきます。
Lambdaとは?
AWSのサービスの一つで、サーバーのプロビジョニングや管理なしでコードを実行することができるサービスです。
aws.typepad.com
サーバーレスというのはあくまで我々サービス利用側で、仕組み的には、必要に応じてコンピュートリソース(EC2インスタンス)を起動し管理されていますが、それを意識する必要はありません。
EC2メンテナンスイベントってなに?
AWS は、インスタンスの基盤となるホストコンピュータをメンテナンスする必要があるとき、インスタンスのメンテナンスを予定します。
とあるように、EC2では、まれにインスタンスの再起動が行われます。
これは前述したメールやマネジメントコンソールのEC2のトップページに通知されますが、
見落としがちなのと、普段からコンソールにログインするとは限らないので、今回slackに通知する運びとなりました。
要件
今回の要件をまとめると、下記2点になります。
- EC2のメンテナンス通知は、AWSから英語メールが届くものの見落としがち
- EC2ではオーバースペックなこともあり、Lambdaでサーバレスに通知してみたい
尚、今回はAWS内部でEventが走り、slackからOutgoingで呼び出しもないため、API Gatewayの準備は不要です。
具体的にはこの流れです。
- 1日1回のスケジュールイベントでLambda Functionを叩く
- メンテナンスイベントから対象のEC2インスタンスイベントを抜きだす
- slackに通知する
登場人物
- Lambdaを実行するIAMにアタッチするポリシー
- スケジュール実行に必要なCloudWatch Events設定
- SlackのIncoming Webhooks設定/Webhook URL取得
- Lambda Functionの作成・実装
今回はここまでです。
次回以降、これら登場人物の詳細を説明していきます。
次回の記事はこちら。
kitakitabauer.hatenablog.com