LINE Botを使って、LINE上からAWS利用料を確認できるようにしてみた

これはなに?

AWS利用料を確認するLINE Botを作ってみたので機能紹介と簡単な構築手順&コード公開。
個人の検証環境としてAWSを利用していると結構課金額がいってしまうので、こまめに確認できるようによく利用するツールのLINEを使ってAWS利用料を確認できるようにしてみました。

1. 作ったもの

LINEのチャットグループに、AWS利用料を確認したい年月を入力すると、AWS利用料を返すLINE Botを作りました。 年月以外の文字列をチャットに入力した場合は、月初から当日までの利用料を返します。

■構成図
f:id:ykoomaru:20210106223946p:plain

  1. LINEグループに文字列を入力
  2. LINEbotのWebhook機能より、API Gatewayを実行
  3. API GatewayからLambdaを実行
  4. Lambda内の関数より、AWS利用料金の取得&LINE送信用メッセージの生成
  5. Lambda内の関数より、LINEAPIの実行(LINEのチャットグループにAWS利用料が表示される)

■利用イメージ
f:id:ykoomaru:20210106222933p:plain

2. 機能、制限

  • 機能

    • 指定した年月のAWS利用料の取得
    • 月初から当日までのAWS利用料の取得
  • 制限

    • AWS CUR APIの仕様上、取得できるAWS利用料は過去12ヶ月まで

3. 手順

LINEチャンネル作成

以下のサイトを参考に3点実施します。
PythonでLine botを作ってみた - Qiita

① LINE Developers アカウント登録
② プロバイダー作成
③ LINEチャンネル作成

チャンネルの作成まで終わると以下のような管理画面となります。

f:id:ykoomaru:20210106231257p:plain

チャンネルトークン/UserIDの取得

LINEAPIを利用するときに、必要な情報をチャンネル管理画面より取得します。

① チャンネルトークン [Messaging API - Channel access token - Channel access token (long-lived)] f:id:ykoomaru:20210106231352p:plain

② UserID [Basic settings - Your user ID]

f:id:ykoomaru:20210106231338p:plain

LINEBot作成

Lambda作成

① LINEAPIのライブラリを取得

python -m pip install LINE-bot-sdk -t .

② lambda_function.py 作成

gist.github.com

③ ①②で作成したファイルをZIP化して、Lambda関数作成後、ZIPアップロード

  • ランタイム : Python3.8

f:id:ykoomaru:20210107230952p:plain

④ Lambda環境変数設定
チャンネルトークンとユーザーIDは環境変数から取得しているので、Lambdaの環境変数と設定します。

環境
LINE_CHANNEL_ACCESS_TOKEN チャンネルトークン
LINE_USER_ID UserID

f:id:ykoomaru:20210107231025p:plain

Api Gateway作成

① REST API のAPIGateway を作成

  • API名: 任意
  • エンドポイントタイプ: リージョン

f:id:ykoomaru:20210107225914p:plain

② リソース追加

  • リソース名: 任意
  • メソッド: POST
  • 統合タイプ: Lambda関数
  • Lambda プロキシ統合の使用: 有効
  • Lambda関数 : <先程作成したLambda関数>
  • ヘッダ- : X-LINE-Signature ※今回は利用していませんが、reply_messageメソッドを利用する際に必要

f:id:ykoomaru:20210107230652p:plain

③ APIのデプロイ/ URL確認

APIをデプロイ後に、呼び出しAPIを確認します。 f:id:ykoomaru:20210107231152p:plain

LINE Messaging API Webhook設定

LINE Official Account ManagerのMessaging APIにより、Webhookの設定をします。

先程取得したAPI GatewayのURLを入力し、保存します。 f:id:ykoomaru:20210106232159p:plain

以上で、LINEBotの設定は完了です。

動作確認

Messaging APIにあるQRコードを読み取って、友達登録します。 f:id:ykoomaru:20210107225320p:plain

メッセージに日時もしくは任意の文字列を入力すれば、AWS利用料を確認できます。 f:id:ykoomaru:20210106222933p:plain

4. 最後に

LINEのAPIが結構わかりやすい作りだったので、思ったよりも簡単に自分がやりたいことが実現できました。昔からLINEを使って何か作りたいなと思っていたので、まず第一歩。今後機能拡張していきたい。

5. 参考サイト

PythonでLine botを作ってみた - Qiita
Lambdaでline-bot-sdk-pythonを使用してオウム返しBOTを作成する - Qiita
体重管理アプリを作りながらLine botとAWSについて学ぶ -前編- | Developers.IO