簡単なLINE Botの作成を通じて、、Messaging APIの基本的な使い方と、 Cloud Runでのコンテナのビルドやデプロイの方法、RestAPIの公開方法などが学べます。
若干、Google Cloudの課金が発生する可能性があります。それ以外は課金など発生しません。 終わった後はリソース一式を削除するなど、無料範囲に収まるようにご留意ください。
https://developers.line.me/ja/services/messaging-api/ にアクセス。
「今すぐはじめよう」のボタンを押す
「チャネル基本設定」タブからチャネルシークレットを、「Messaging API設定」タブからアクセスキーをそれぞれ取得する
チャネルシークレット
アクセストークン
チャネルシークレット:Botサーバで受信したリクエストが不正なものでないかのチェックで使用される(LINE以外のサーバーからリクエストが送られていないかの確認)
アクセストークン:LINEのAPI(機能)を実行する際に、認可が通り利用権限があることを証明するトークン
Cloud ShellはGCP上に用意される無料のオンライン環境で、
利用が終わると停止しますが、作業内容はディスクに保存され、次回ログイン時にも引き続き使うことができます。
なおディスク容量は5GBしかありませんので、それ以上の大きなデータを扱う場合は
VM Instanceなど他のサービスを使う必要があります。
参考: https://cloud.google.com/shell/pricing?hl=ja
$ 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
"name": "echo-bot",
↓
"name": "handson-line-bot-gcp-01" ,
FROM node:12
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
$ gcloud auth login
$ cd ~/handson-line-bot-gcp-01
$ gcloud builds submit \
--tag gcr.io/$GOOGLE_CLOUD_PROJECT/handson-line-bot-gcp-01
デプロイする際、あわせてチャネルアクセストークンとチャネルシークレットを環境変数に登録するやり方です。
ただし環境変数はプロジェクト閲覧者以上の権限を持つユーザーには見えてしまいますので、
正式なサービスでは避けた方がよく、代わりに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 ←これをコピー
「検証」をクリックして、200 OKになることを確認
トラブルシュート
Container Registory > イメージ > handson-line-bot-gcp-01 > コンテナにチェックを入れて 「削除」
参考文献 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