以前書いた記事
が、サーバーにインストールして使う形だったので、
もっとお金をかけずに動かそうと思って、AWS lambda で動くプログラムを作成しました。
設定
まずはこちらを手元の PC にクローンしてください。
github:
https://github.com/acchanAlexander/notice-train-delay-to-slack-lambda
レポジトリのトップディレクトリで
npm i
とコマンドを打ってください。(npm のインストールが必要です。)
次に、落としてきたレポジトリの中にある、target_train.json に通知したい電車の情報を記載していきます。
name は、路線の名前です。
ここで設定しないといけないのは https://rti-giken.jp/fhc/api/train_tetsudo/ の路線名に合致する命名でなければなりません。
link は、詳細情報が載っているリンクを設定します。
通知されるメッセージ内に詳細リンクを貼るために設定します。
https://www.tetsudo.com/traffic/ にあるリンク先を設定するなどして使ったらいいかと思ってます。
ここの値はなくてもかまわないので、その場合は空文字列 ” などを入れてください。
roomId は、通知先の slack のroomIdを設定します。
roomIdについては、ブラウザでルームを開きURL末尾の messages/XXXXXXXXX/ となっている
XXXXXXXXX の部分です。
ここまで完了したら、lambda にデプロイする zip ファイルを作成します。
レポジトリのトップディレクトリで
zip -r notice-train-delay-to-slack-lambda.zip *
とコマンドを打ってください。
環境設定
lambda の画面の、「関数の作成」から関数を作成します。
関数名は適当な名前をつけてください
ランタイムは Node.js の 10 系を設定してください
実行ロールを設定してください。
lambda を実行できるパーミッションがついたロールなら OK だと思います。
今回は、基本的なロールを選択しました。
lambda の画面に移るので、
「関数コード」の「コードエントリタイプ」を「.zip ファイルをアップロード」に設定します。
「アップロード」のボタンより、先ほどの zip ファイルをアップロードしてください。
環境変数を下記のように設定します。
ADMIN_CHANNEL_ID は、エラー通知が飛ぶ部屋の ID です。
SLACK_TOKEN には、slack bot のAPIキーを登録してください
基本設定のタイムアウト時間は、10 秒くらいにしておいてください。
ここまでで、lambda の設定は完了です。
次に、lambda を動かす Cloud Watch Event の設定です。
Cloud Watch Event の画面より、「ルールの作成」をクリックします。
イベントソースを設定してください。
今回は cron 式で設定しました。ここの時刻は GMT になるので注意してください。
今回は 8:00 と 17:00 にしたかったので、下記のようにしています。
名前と説明に適当な内容を入力します。
以上で環境設定は完了です。
何か不具合があった場合は、Cloud Watch Logs にログが出力されますので、そちらをご確認ください。