今年の始めくらいにはなりますが、Line Notify の提供が終了されるとのおしらせがありました。それで、Lambda でLine nofity を使っていたので、今回はLine Message API に変更してみるブログになります。 設定方法についても少し変わったみたいなので、設定方法も含めて今回は書いていこうと思います。
Line notify 終了のお知らせについて
今回の環境
コードに関してはGitHub で管理しています。今回はcost explorer での料金をLambda を使って通知するという内容になります。通知内容を変更する場合は、コードの変更が必要になります。
設定手順
最初に事前準備として、Line アカウントを作成する必要があります。Line business アカウントから作成するとMessage API の欄が出てきますので、各自探してみてください。
今回Lambda からLine に通知するにあたって、以下の情報が必要になります。
- Group ID (個人的にグループラインにしたかったので)
- Line Token
まずはGroup ID を取得するところから始めていきます。
グループID 取得方法について
ラインで自分の作成したアカウントをグループに招待したものと思って進めていきます。グループID はアカウントのコンソール画面などでは見つけることはできないので、GAS などのWebhook を通して取得する必要があるようです。なので、GAS 触っていきます。
適当にスプレッドシートを作成
ほんとに何でもいいです。
google app script に移動
Apps Script にいきます。

下記のスクリプトを貼り付けます
function getGroupId(e) {
var events = JSON.parse(e.postData.contents).events;
events.forEach(function(event) {
if (event.type === 'message' && event.source.type === 'group') {
var groupId = event.source.groupId;
// スプレッドシートに記録
var sheet = SpreadsheetApp.openById('<spread sheet ID>').getActiveSheet();
sheet.appendRow([new Date(), groupId]);
}
});
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post received' }))
.setMimeType(ContentService.MimeType.JSON);
}
新しいデプロイ

ウェブアプリとしてデプロイします

ウェブアプリのURL をLine のwebhook に登録 > Line でメッセージを送信
Line developer のMessage API のページにWebhook URL があるので、ウェブアプリのURL をコピペします。セキュリティ上のせれないですが、本当はもっとURLは長いです。

Verifyというのがあるのですが、ここではエラーが発生する可能性はありますが、Line の方でテスト送信をしてみて、問題なければ下記のエラーは無視で問題ないです。302 でリダイレクトされているようですね。

ラインで通知後、spreadsheet にgroup ID が送信されていることを確認してください。後々使用します。B 欄にあるのが、Group ID です。(セキュリティ上塗りつぶししてます)

Line のAccess Token もwebhook を設定したページと同じところで、取得できたので下までスクロールして発行してみてください。ここまでできたら、次はLambda 側の設定です。
Lambda の設定
GitHub にも手順は載せていますが、ここでも書いていきます。まずは、今回のpython に必要なlib をインストールして、Lambda layer に入れてきます。
pip install -r requirements.txt
mkdir -p layer/python
pip install -r requirements.txt -t layer/python/
cd layer
zip -r ../lambda-layer.zip .
cd ..
ライブラリーをインストールできたら、Lambda Layer にデプロイしていきます。
aws lambda publish-layer-version \
--layer-name cost-notify-dependencies \
--description "Dependencies for cost notification Lambda" \
--zip-file fileb://lambda-layer.zip \
--compatible-runtimes python3.10 \
--region ap-northeast-1
次にLambda 関数を作成してください。
aws lambda create-function \
--function-name cost-notify-lambda \
--runtime python3.10 \
--role arn:aws:iam::YOUR-ACCOUNT-ID:role/lambda-execution-role \
--handler cost-notfiy.lambda_handler \
--zip-file fileb://lambda-function.zip \
--description "AWS cost notification Lambda function" \
--timeout 60 \
--memory-size 128 \
--region ap-northeast-1
そして、layer をあてていきます。
aws lambda update-function-configuration \
--function-name cost-notify-lambda \
--layers arn:aws:lambda:ap-northeast-1:YOUR-ACCOUNT-ID:layer:cost-notify-dependencies:1 \
--region ap-northeast-1
最後に環境変数の設定をします。各自で値をセットしてください。

ここまでできたら、後はlambda のテスト機能を使ってテストします。
問題なくLine に通知されれば、オッケーです!
まとめ
Line Message API に変更になったとしても、やっていること自体はそこまで変わらないです。lambda で通知をしてみたい人などに参考になれば幸いです。
参考サイト
Line Message API 公式ドキュメント:
コメント