はじめに
子連れ旅行中の車内で遊べる「なぞなぞLINEbot」を作りました。今回は、Croud Runを使ってLINEのWebhook設定にチャレンジしたので、忘れないうちにまとめとこうと思います。
前提条件
下記の使用技術を用いたアプリを作成するために必要なモジュールのインストールやGitHubのリポジトリ、Dockerfileの作成は完了している状態です。
1. 概要
このプロジェクトでは、LINE Messaging APIを使用してユーザーからのリクエストに応答し、OpenAIを利用して謎とヒントを生成するLINEボットを構築します。バックエンドはFastAPIで実装し、Google Cloud Runにデプロイします。
2. 使用技術・ツール
Python: バックエンドの開発に使用。
FastAPI: Webフレームワーク。
Dockerfile: アプリケーションをコンテナ化。
Google Cloud Run: アプリケーションのホスティング。
GitHub: ソースコード管理。
LINE Messaging API: ボットのメッセージ処理に使用。
OpenAI API: 謎とヒントを生成。
設定の手順
1. GitHub Secretsの設定:
GitHub Secretsは、環境変数の一種で、APIキーやパスワードなどの機密情報をGitHubリポジトリ内で安全に保管する方法です。これを利用してGoogle Cloudのサービスアカウント鍵やプロジェクトIDを設定します。
設定手順:
-
GitHubリポジトリに移動:
- 対象のリポジトリにアクセスします。
-
Secretsの追加:
-
GCP_SA_KEY
の追加:- サービスアカウントの秘密鍵ファイル(JSON)を開き、全内容をコピーします。
- GitHub Secretsで
GCP_SA_KEY
という名前で新しいシークレットを作成し、その内容を貼り付けます。
サービスアカウントの秘密鍵ファイル(JSON)の作成・確認方法
-
GCP_PROJECT_ID
の追加:- Google Cloud ConsoleでプロジェクトIDを確認します。
- 同じくGitHub Secretsで
GCP_PROJECT_ID
という名前で新しいシークレットを作成し、プロジェクトIDを入力します。
※IAMの設定
2. Dockerイメージの準備:
GitHub Actionsでは、DockerイメージをビルドしてGoogle Cloud Artifact Registryにプッシュする設定が含まれています。これにはリポジトリ名(REPO_NAME
)の設定が重要です。
Artifact Registryでリポジトリの作成 設定手順:
- 適切なリポジトリ名の設定:
-
GitHub Actions内のイメージタグ更新:
-
REPO_NAME
をそれぞれのリポジトリ名に置き換えます(例:frontend
,backend
,firebase-functions
)。 - イメージのフルパスは
us-central1-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
になります。
-
3. Cloud Runのサービス作成:
Cloud Runでは、各アプリケーション(フロントエンド、バックエンド、Firebase Functions)が独立したサービスとしてデプロイされます。これらのサービス名は、GitHub Actionsで定義され、正確に指定する必要があります。LINEボットの場合は、バックエンドのデプロイのみでサービスの利用が可能です。
設定手順:
-
Cloud Runにサービスを作成:
-
GitHub Actionsのサービス名と一致させる:
-
cloudbuild.yaml
ファイル内のサービス名(backend-service
)がCloud Runで作成したサービス名と一致しているか確認します。
name: Deploy to Cloud Run on: push: branches: - main # 本番環境用のブランチ - dev # 作業ブランチ jobs: deploy: runs-on: ubuntu-latest steps: - name: Check out the repository uses: actions/checkout@v2 - name: Set up Google Cloud SDK uses: google-github-actions/setup-gcloud@v1 with: version: "latest" service_account_key: ${{ secrets.GCP_SA_KEY }} project_id: ${{ secrets.GCP_PROJECT_ID }} # バックエンドのビルドとプッシュ - name: Build and Push Backend Image run: | docker build -t us-central1-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/REPO_NAME/backend ./backend docker push us-central1-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/REPO_NAME/backend # Cloud Runへのデプロイ - バックエンド - name: Deploy to Cloud Run - Backend uses: google-github-actions/deploy-cloudrun@v2.7.1 with: service: backend-service region: us-central1 image: us-central1-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/REPO_NAME/backend
-
4. Webhookの設定:
- LINE デベロッパーコンソールにログインしてMessaging API設定のWebhook URLを設定します。
Messaging APIコンソール
公式ドキュメント
最後までお読みいただきまして、ありがとうございます!
誤り等ありましたら、ご教示くださると幸いです。