Handson-LINE-Bot-GCP-template-01

1.概要

簡単なLINE Botの作成を通じて、、Messaging APIの基本的な使い方と、 Cloud Runでのコンテナのビルドやデプロイの方法、RestAPIの公開方法などが学べます。

当日の持ち物

事前準備

使用するサービス・ツール

使用する言語

構成図

kouseizu

注意事項

若干、Google Cloudの課金が発生する可能性があります。それ以外は課金など発生しません。 終わった後はリソース一式を削除するなど、無料範囲に収まるようにご留意ください。

2.実装

LINE側の設定

新規チャンネル作成

チャネルの種類

プロバイダ

会社・事業者の所在国・地域

チャネルアイコン

チャネル名、チャネル説明

大業種、小業種

メールアドレス、プライバシーポリシーURL、サービス利用規約URL

作成実行

LINE公式アカウント(LINE Bot)と友だちになる

チャネルシークレット、アクセストークンの取得

Note:

応答モードをOFFにする

GCP側の設定

プロジェクト作成

image

Cloud Runの有効化

image

Cloud Shellの起動

Cloud ShellはGCP上に用意される無料のオンライン環境で、
利用が終わると停止しますが、作業内容はディスクに保存され、次回ログイン時にも引き続き使うことができます。
なおディスク容量は5GBしかありませんので、それ以上の大きなデータを扱う場合は 
VM Instanceなど他のサービスを使う必要があります。
参考: https://cloud.google.com/shell/pricing?hl=ja

LINE公式サンプルコードをGitHubからClone

$ git clone https://github.com/line/line-bot-sdk-nodejs.git
$ cp -r ~/line-bot-sdk-nodejs/examples/echo-bot/ ~/handson-line-bot-gcp-01
$ cd handson-line-bot-gcp-01

Cloud Shellのエディタでファイル編集

"name": "echo-bot",

"name": "handson-line-bot-gcp-01" ,

autosave

Dockerfileを書く

FROM node:12
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]

認証

$ gcloud auth login

コンテナをビルドし、Container Registoryへ格納

$ cd ~/handson-line-bot-gcp-01
$ gcloud builds submit \
  --tag gcr.io/$GOOGLE_CLOUD_PROJECT/handson-line-bot-gcp-01

Cloud Runへデプロイ

デプロイする際、あわせてチャネルアクセストークンとチャネルシークレットを環境変数に登録するやり方です。
ただし環境変数はプロジェクト閲覧者以上の権限を持つユーザーには見えてしまいますので、
正式なサービスでは避けた方がよく、代わりにSecret Managerを使用してください。
参考)https://cloud.google.com/run/docs/configuring/environment-variables?hl=ja#command-line
$ CHANNEL_ACCESS_TOKEN=ここにチャネルアクセストークンを記入(ダブルクウォートなどで囲む必要なし)
$ CHANNEL_SECRET=ここにチャネルシークレットを記入(ダブルクウォートなどで囲む必要なし)

$ gcloud run deploy handson-line-bot-gcp-01 \
  --image gcr.io/$GOOGLE_CLOUD_PROJECT/handson-line-bot-gcp-01 \
  --set-env-vars "CHANNEL_ACCESS_TOKEN=$CHANNEL_ACCESS_TOKEN"  \
  --set-env-vars "CHANNEL_SECRET=$CHANNEL_SECRET"  \
  --platform managed   \
  --region asia-northeast1 \
  --allow-unauthenticated  \
  --max-instances=1
OK Deploying... Done.                                                             
  OK Creating Revision...                                                         
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [line-bot-gcp-01] revision [line-bot-gcp-01-00002-has] has been deployed and is serving 100 percent of traffic.
Service URL: https://line-bot-gcp-01-hogehogehoge-uc.a.run.app ←これをコピー

URLの動作確認

3.統合

Webhook URLをLINE 側に登録

webhook

これでLINEのBotを動かす準備は全て整いました!

実機確認

99.片づけ

Container Registory : コンテナを消す

Cloud Run: アプリを消す

参考文献 https://github.com/line/line-bot-sdk-nodejs https://developers.line.biz/ja/docs/messaging-api/getting-started/ https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-nodejs-service?hl=ja