これはなに?
AWS利用料を確認するLINE Botを作ってみたので機能紹介と簡単な構築手順&コード公開。
個人の検証環境としてAWSを利用していると結構課金額がいってしまうので、こまめに確認できるようによく利用するツールのLINEを使ってAWS利用料を確認できるようにしてみました。
1. 作ったもの
LINEのチャットグループに、AWS利用料を確認したい年月を入力すると、AWS利用料を返すLINE Botを作りました。 年月以外の文字列をチャットに入力した場合は、月初から当日までの利用料を返します。
■構成図
- LINEグループに文字列を入力
- LINEbotのWebhook機能より、API Gatewayを実行
- API GatewayからLambdaを実行
- Lambda内の関数より、AWS利用料金の取得&LINE送信用メッセージの生成
- Lambda内の関数より、LINEAPIの実行(LINEのチャットグループにAWS利用料が表示される)
■利用イメージ
2. 機能、制限
機能
- 指定した年月のAWS利用料の取得
- 月初から当日までのAWS利用料の取得
制限
- AWS CUR APIの仕様上、取得できるAWS利用料は過去12ヶ月まで
3. 手順
LINEチャンネル作成
以下のサイトを参考に3点実施します。
PythonでLine botを作ってみた - Qiita
① LINE Developers アカウント登録
② プロバイダー作成
③ LINEチャンネル作成
チャンネルの作成まで終わると以下のような管理画面となります。
チャンネルトークン/UserIDの取得
LINEAPIを利用するときに、必要な情報をチャンネル管理画面より取得します。
① チャンネルトークン [Messaging API - Channel access token - Channel access token (long-lived)]
② UserID [Basic settings - Your user ID]
LINEBot作成
Lambda作成
① LINEAPIのライブラリを取得
python -m pip install LINE-bot-sdk -t .
② lambda_function.py 作成
③ ①②で作成したファイルをZIP化して、Lambda関数作成後、ZIPアップロード
- ランタイム : Python3.8
④ Lambda環境変数設定
チャンネルトークンとユーザーIDは環境変数から取得しているので、Lambdaの環境変数と設定します。
環境 | 値 |
---|---|
LINE_CHANNEL_ACCESS_TOKEN | チャンネルトークン |
LINE_USER_ID | UserID |
Api Gateway作成
① REST API のAPIGateway を作成
- API名: 任意
- エンドポイントタイプ: リージョン
② リソース追加
- リソース名: 任意
- メソッド: POST
- 統合タイプ: Lambda関数
- Lambda プロキシ統合の使用: 有効
- Lambda関数 : <先程作成したLambda関数>
- ヘッダ- : X-LINE-Signature ※今回は利用していませんが、reply_messageメソッドを利用する際に必要
③ APIのデプロイ/ URL確認
APIをデプロイ後に、呼び出しAPIを確認します。
LINE Messaging API Webhook設定
LINE Official Account ManagerのMessaging APIにより、Webhookの設定をします。
先程取得したAPI GatewayのURLを入力し、保存します。
以上で、LINEBotの設定は完了です。
動作確認
Messaging APIにあるQRコードを読み取って、友達登録します。
メッセージに日時もしくは任意の文字列を入力すれば、AWS利用料を確認できます。
4. 最後に
LINEのAPIが結構わかりやすい作りだったので、思ったよりも簡単に自分がやりたいことが実現できました。昔からLINEを使って何か作りたいなと思っていたので、まず第一歩。今後機能拡張していきたい。
5. 参考サイト
PythonでLine botを作ってみた - Qiita
Lambdaでline-bot-sdk-pythonを使用してオウム返しBOTを作成する - Qiita
体重管理アプリを作りながらLine botとAWSについて学ぶ -前編- | Developers.IO