Cloud Run functions へのデプロイ

このページでは、Cloud Build を使用して Cloud Run functions にアプリケーションをデプロイする方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートビルド構成の概要をご覧ください。

Cloud Run functions は、クラウド サービスの構築と接続に使用できるサーバーレスの実行環境です。Cloud Run functions を使用すると、クラウド インフラストラクチャやサービスで生じたイベントに関連付けられた、単一目的の関数を作成できます。対象のイベントが発生すると、関数がトリガーされます。Cloud Run functions の詳細については、Cloud Run functions のドキュメントをご覧ください。

始める前に

  • Cloud Run functions API を有効にします。

    Cloud Run functions API を有効にする

  • アプリケーションのソースコードを用意します。 ソースコードは、GitHub や Bitbucket などのリポジトリに保存する必要があります。

  • このページで gcloud コマンドを実行するには、Google Cloud CLI をインストールします。

必要な Identity and Access Management 権限

  1. Google Cloud コンソールで、 Cloud Build の [権限] ページに移動します。

    [権限] に移動

  2. 指定した Cloud Build サービス アカウントまたはデフォルトの Cloud Build サービス アカウントで、次のロールのステータスを [有効] に設定します。

    • Cloud Functions デベロッパー(roles/cloudfunctions.developer)| 関数をデプロイして管理します。
    • Cloud Run 管理者(roles/run.admin)| Cloud Build サービス アカウントが Cloud Run に新しいバージョンをデプロイできるようにします。
    • ストレージ管理者(roles/storage.admin)| Cloud Storage からの読み取りと書き込みを有効にします。
    • Artifact Registry 書き込み(roles/artifactregistry.writer)| Artifact Registry からのイメージの pull と Artifact Registry への書き込みを許可します。
    • ログ書き込み(roles/logging.logWriter)| ログエントリを Cloud Logging に書き込むことができます。
    • Cloud Build 編集者(roles/cloudbuild.builds.editor)| サービス アカウントでビルドを実行できます。

デプロイを構成する

Cloud Build では、一般公開されているコンテナ イメージを使用してタスクを実行できます。これを行うには、Cloud Build 構成ファイルのビルド step にイメージを指定します。

Cloud Run functions の gcloud functions deploy コマンドを使用して、関数コードを含むディレクトリから関数をデプロイします。たとえば、構成ファイルのビルドステップで cloud-sdk イメージを使用すると、イメージから gcloud コマンドを使用できます。このビルドステップに渡された引数が Google Cloud CLI に直接渡されるので、このイメージで任意の gcloud コマンドを実行できます。

Cloud Run functions にアプリケーションをデプロイするには、次の操作を行います。

  1. プロジェクトのルート ディレクトリに、cloudbuild.yaml または cloudbuild.json という名前の Cloud Build 構成ファイルを作成します。
  2. config ファイルで次の操作を行います。

    • name フィールドを追加して gcloud ビルドステップを指定します。
    • gcloud functions deploy コマンドを呼び出すため、functions deployargs フィールドに追加します。 使用可能な構成オプションについては、gcloud functions deploy リファレンスをご覧ください。
    • --source=. は、ソースコードが現在の作業ディレクトリにあることを示します。

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    上の構成ファイルのプレースホルダ値を次の値に置き換えます。

    • FUNCTION_NAME は、デプロイする Cloud Run functions の名前です。既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。
    • FUNCTION_REGION は、Cloud Run functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Run functions のロケーションをご覧ください。
    • --trigger-http は、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。
    • RUNTIME は、関数を実行するランタイムです。

    gcloud functions deploy の使用について詳しくは、Cloud Run functions のドキュメントをご覧ください。

  3. 前の手順で作成した構成ファイルを使用してビルドを開始します。

     gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

    上の構成ファイルのプレースホルダ値を次の値に置き換えます。

    gcloud builds submit コマンドに CONFIG_FILE_PATHSOURCE_DIRECTORY を指定しないと、Cloud Build は、構成ファイルとソースコードが現在の作業ディレクトリにあることを前提とします。

継続的デプロイ

Cloud Build トリガーを作成すると、ソフトウェアの Cloud Run functions へのデプロイを自動化できます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。

Cloud Run functions へのデプロイを自動化するには:

  1. リポジトリのルートで、gcloud functions deploy コマンドを呼び出すステップを構成ファイルに追加します。

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    上の構成ファイルのプレースホルダ値を次の値に置き換えます。

    • FUNCTION_NAME は、デプロイする Cloud Run functions の名前です。既存の関数を更新する場合、この値は更新する関数の名前と一致する必要があります。
    • FUNCTION_REGION は、Cloud Run functions をデプロイするリージョンです。サポートされているリージョンの一覧については、Cloud Run functions のロケーションをご覧ください。
    • --trigger-http は、この関数のトリガーの種類です。この場合は、HTTP リクエスト(Webhook)です。
    • RUNTIME は、関数を実行するランタイムです。
  2. 前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。

    1. Google Cloud コンソールで [トリガー] ページを開きます。

      [トリガー] ページを開く

    2. ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。

    3. [トリガーを作成] をクリックします。

    4. [名前] 欄にトリガーの名前を入力します。

    5. [リージョン] で、トリガーのリージョンを選択します。

    6. [イベント] で、リポジトリ イベントを選択してトリガーを開始します。

    7. [ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。

    8. [構成] で [Cloud Build 構成ファイル(YAML または JSON)] を選択します。

    9. [Cloud Build 構成ファイルの場所] フィールドで、/ の後に「cloudbuild.yaml」と入力します。

    10. [作成] をクリックして、ビルドトリガーを保存します。

リポジトリに新しいコードを push するたびに、ビルドが自動的にトリガーされ、Cloud Run functions にデプロイされます。

Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。

次のステップ