雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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