2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE Messaging APIのWebhook設定 with Cloud Run

Last updated at Posted at 2024-10-20

はじめに

子連れ旅行中の車内で遊べる「なぞなぞ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を設定します。

設定手順:

  1. GitHubリポジトリに移動

    • 対象のリポジトリにアクセスします。
  2. Secretsの追加

    1. リポジトリの「Settings」タブに移動

    2. 左側のメニューから「Secrets and variables」→「Actions」を選択。
      スクリーンショット 2024-09-29 17.40.11(2).png

    3. 「New repository secret」ボタンをクリックし、新しいシークレットを追加。
      スクリーンショット 2024-09-29 17.44.08(2).png

  3. GCP_SA_KEYの追加

  4. GCP_PROJECT_IDの追加

    • Google Cloud ConsoleでプロジェクトIDを確認します。
    • 同じくGitHub SecretsでGCP_PROJECT_IDという名前で新しいシークレットを作成し、プロジェクトIDを入力します。
      スクリーンショット 2024-09-29 18.05.48(2).png

    ※IAMの設定

    プロジェクトのIAM設定は以下の画像のロールが設定する必要があります。
    スクリーンショット 2024-09-14 20.11.41(2).png

2. Dockerイメージの準備:

GitHub Actionsでは、DockerイメージをビルドしてGoogle Cloud Artifact Registryにプッシュする設定が含まれています。これにはリポジトリ名(REPO_NAME)の設定が重要です。

Artifact Registryでリポジトリの作成 設定手順:

  1. 適切なリポジトリ名の設定
    • Google Cloud Artifact Registryに、Dockerイメージを保存するリポジトリ(REPO_NAME)を作成します。画像ではREPO_NAME=buttlerで設定されています。
      スクリーンショット 2024-09-28 21.49.22(2).png
    • Google Cloud Consoleで「Artifact Registry」→「リポジトリの作成」をクリックし、backend,のイメージ用にリポジトリを作成します。
      スクリーンショット 2024-09-28 21.49.40(2).png
  2. 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ボットの場合は、バックエンドのデプロイのみでサービスの利用が可能です。

設定手順:

  1. Cloud Runにサービスを作成

    • Google Cloud Consoleにアクセスし、「Cloud Run」を選択。

    • 「サービスの作成」をクリックし、backend-serviceという名前で各サービスを作成します。
      スクリーンショット 2024-09-28 21.52.36(2).png
      スクリーンショット 2024-09-28 21.52.49(2).png
      スクリーンショット 2024-09-28 21.53.15(2).png
      スクリーンショット 2024-09-28 21.54.14(2).png
      スクリーンショット 2024-09-28 21.54.38(2).png
      スクリーンショット 2024-09-28 21.55.19(2).png

    • us-central1リージョンを選択し、下記の画像の通り設定します。
      スクリーンショット 2024-09-28 21.55.56(2).png

  2. 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
    

    なぞなぞbotリポジトリ

4. Webhookの設定:

最後までお読みいただきまして、ありがとうございます!
誤り等ありましたら、ご教示くださると幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?