AizuHack LINEBot勉強会 Vol.4
資料一覧
- LINEBotとは
- AizuHack LINEBot勉強会 Vol.1
- AizuHack LINEBot勉強会 Vol.2
- AizuHack LINEBot勉強会 Vol.3
- AizuHack LINEBot勉強会 Vol.4(本記事)
はじめに
こんにちは、会津大学学部二年のしんぶんぶんです。
今回はGCP(Google Cloud Platform)のCloud Runへのデプロイ方法について解説します。
今回やる内容について
前回まではBotのサーバをローカルで立ててngrokで外部公開していましたが、PCを落とすとサーバも落ちてしまうため、このままでは作ったBotをリリースできません。今回はBotをクラウドにホスティングすることで、サービスとしてリリースできる形にします。
今回はGCPのCloud Runというサービスを使用し、BotのソースコードがあるGitHubリポジトリのmasterブランチにpushされたら自動でデプロイされるような、継続的デプロイ(CD)を実装します。
継続的デプロイの構成図は以下のようになります。
GCPの無料枠について
今回使う中でSecret Managerだけ無料枠がありません。微量ですが課金が発生するため、ご注意ください。
課金を発生させたくない場合は、Secret Managerを使う作業をスキップして、Cloud Runの環境変数に直接TokenとSecretを保存する方法をとることもできます(非推奨ですが)。
本記事の途中でdummyの環境変数を登録する操作があるため、その際に本物の値を入力してください。
GCPのアカウントを作成しよう
-
こちらにアクセスして、「無料で開始」をクリック
- 必要事項を入力して「続行」をクリック
- 電話番号を入力して「コードを送信」をクリック
- SMSで確認コードが届くので、入力して「確認」をクリック
- クレジットカード番号、住所などを入力して「無料トライアルを開始」をクリック
これで作成完了です!
リポジトリをフォークしよう
自分のアカウントにサンプルコードのリポジトリをForkします
- こちらのGitHubリポジトリにアクセスする
- 右上の「Fork」を選択してリポジトリをForkする
- Ownerに自分のアカウントを選択して、「Create fork」をクリックする
これでフォーク完了です!
GCPのプロジェクトを作成しよう
- GCPのコンソールを開き、プロジェクトを選択するプルダウンをクリックする
- プロジェクトの選択画面が表示されるので、「新しいプロジェクト」を選択する
- 好きなプロジェクト名を入力して、「作成」をクリックする
- 再度プロジェクトを選択するプルダウンをクリックして、先ほど作成したプロジェクトを選択する(表示されない場合はリロードする)
これでプロジェクトの作成が完了しました!
Secretを登録しよう
環境変数としてサーバに読み込ませるシークレットを登録します。
- 上にある検索バーをクリックし、「secret manager」と検索する
- 「Secret Manager」を選択する
- 「有効にする」を選択
- 「シークレットを作成」を選択
- 「名前」に
CHANNEL_ACCESS_TOKEN
、「シークレットの値」にMessaging APIのチャネルアクセストークンを入力し、「シークレットを作成」をクリック
- シークレットが作成されるので、シークレットの一覧ページに戻る
- もう一度「シークレットを作成」をクリック
- 「名前」に
CHANNEL_SECRET
、「シークレットの値」にMessaging APIのチャネルシークレットを入力し、「シークレットを作成」をクリックする
これでシークレットの作成が完了しました!
Cloud Runを作成しよう
次はCloud Runを作成します
- 検索バーに
cloud run
と入力します
- Cloud Runを選択します
- 「サービスの作成」を選択する
- 「ソース リポジトリから新しいリビジョンを継続的にデプロイする」を選択し、「SET UP WITH CLOUD BUILD」をクリックする
- 「CLOUD BUILD APIを有効にする」、「CONTAINER ANALYSIS APIを有効にする」をクリック
- 「認証」をクリック
- 「続行」を選択
- GitHubのページに飛ばされるので、認証をする
- 「Manage connected repositories」をクリックする
- 自分のアカウントを選択する
- 「Only select repositories」を選択し、
aizuhack-bot
リポジトリを選択する
- 「Install」をクリック
- 「リポジトリ」で
aizuhack-bot
を選択し、チェックボックスにチェックをして「次へ」をクリック
- 「ブランチ」は
^master$
、「BuildType」はGo、Node.js、Python、Java、.NET Core、Ruby(Google Cloud Buildpacks を使用)
を選択し、「保存」をクリックする
- 「リージョン」は
asia-northeast1(東京)
を選択
- 「認証」は
未認証の呼び出しを許可
を選択
- 「コンテナポート」には
3000
を入力
- 「変数とシークレット」を選択
- 最初のビルドを成功させるため、以下のようにダミーの環境変数を設定する
- 以上の操作を行うと、設定は以下のようになる
- ページ最下部にある「作成」をクリックする
- しばらくするとデプロイが完了するので、「新しいリビジョンの編集とデプロイ」をクリックする
- 「変数とシークレット」をクリックする
- 環境変数の右側にカーソルを持っていくとゴミ箱マークのボタンが出てくるので、それをクリックしてダミーの環境変数を両方削除する
- 「シークレットの参照」をクリック
- 「Secret」は
CHANNEL_ACCESS_TOKEN
、「参照の方法」は「環境変数として公開」を選択して、「名前1」にchannelAccessToken
と入力して「バージョン1」はlatest
を選択する
- 以下のような表示が出るので、「付与」をクリックする
- 「完了」をクリックする
- 再び「シークレットの参照」をクリックする
- 「Secret」は
CHANNEL_SECRET
、「参照の方法」は「環境変数として公開」を選択して、「名前1」にchannelSecret
と入力して「バージョン1」はlatest
を選択する
- 以下のような表示が出るので、「付与」をクリックする
- 「完了」をクリックする
- 「デプロイ」をクリックする
これでCloud Runの作成は完了です!
Webhook URLを設定しよう
- 5分ほど待つとデプロイが完了するので、サービス名の右にあるURLをコピーする
- URLにアクセスし、
Deploy succeeded
と表示されることを確認する(ビルドが終わっていないことがあるので、エラーが表示された場合は5分くらい待ってから再試行する) - Messaging APIのチャネルのページに移動し、「Messaging API設定」→「Webhook設定」→「Webhook URL」の「編集」をクリックし、コピーしたURLの末尾に
/webhook
を付与したものを入力する(e.g.https://XXXXXX.XXXXXXX.a.run.app/webhook
) - 「検証」ボタンをクリックし、「成功」と表示されることを確認する
以上でCloud Runへのデプロイは完了です!お疲れ様でした!
ログの確認方法
「ログ」のタブを選択すると、サーバのログが確認できます。下にスクロールするほど新しいログになり、最下部でさらにスクロールするとログが更新されます。リクエストがきてからログが表示されるまでには若干のラグがあります。
右上のこのボタンを押すと、さらに詳しくログの検索や絞り込みができます。
さいごに
皆さんここまでお疲れ様でした!
Vol.1でLINEBotの基礎を学び、Vol.2でさらにリッチなLINEBotの作り方、Vol.3で外部API, DBとの連携、Vol.4(今回)でクラウドへのデプロイ方法を学びました。ここまでの知識があればたいていのLINEBotは作ってリリースできるようになるかと思います。皆さんも是非LINEBotをたくさん作って気軽にリリースしてみてください!