Cloud Run 関数(HTTP)のスタートガイド

1. はじめに

概要

Cloud Run functions は、使い慣れた GCF イベント パラダイムと関数シグネチャを使用してワークロードをデプロイする新しい方法です。Cloud Run functions では、Google の独自のビルドプロセスとデプロイ構成を使用する代わりに、Cloud Run で作成された基盤となる Service を直接制御できます。

Cloud Run functions では、Cloud Run ソース デプロイのシンプルな UX を提供し、デベロッパーが Cloud Run 構成を使用してワークロードを完全に制御できるようにします。

この Codelab では、以下の例で nodejs サンプルを使用します。ただし、Cloud Functions(第 2 世代)のコードサンプルは、任意の言語で使用できます。

学習内容

  • HTTP リクエストによってトリガーされる Cloud Run 関数をデプロイする方法

2. 環境変数を設定して API を有効にする

gcloud CLI をアップグレードする

まず、最新バージョンの gcloud CLI をインストールする必要があります。CLI を更新するには、次のコマンドを実行します。

gcloud components update

環境変数を設定する

この Codelab 全体で使用する環境変数を設定できます。

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

API を有効にする

この Codelab を開始する前に、いくつかの API を有効にする必要があります。この Codelab では、次の API を使用する必要があります。これらの API を有効にするには、次のコマンドを実行します。

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. HTTP 関数を作成する

まず、ソースコードのディレクトリを作成し、そのディレクトリに移動します。

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

次に、次の内容の package.json ファイルを作成します。

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

次に、次の内容の index.js ファイルを作成します。

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. 関数をデプロイする

次のコマンドを実行して、Cloud Run 関数をデプロイします。

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

このコマンドは、Buildpack を使用して、関数ソースコードを本番環境対応のコンテナ イメージに変換します。

次の点にご注意ください。

  • –source フラグは、関数を実行可能なコンテナベースのサービスにビルドするように Cloud Run に指示するために使用されます。
  • –function フラグ(新規)は、呼び出す関数シグネチャになるように新しいサービスのエントリ ポイントを設定するために使用されます。
  • (省略可)関数が一般公開で呼び出し可能になるのを防ぐための –no-allow-unauthenticated

5. 関数をテストする

デプロイが完了すると、サービス URL が表示されます。関数を呼び出すには、次のように、ID トークンまたは Cloud Run 起動元のロールを持つプリンシパルの ID トークンを使用して、認証済みリクエストを送信する必要があります。

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

6. 完了

以上で、この Codelab は完了です。

Cloud Run functions のドキュメントを確認することをおすすめします。

学習した内容

  • HTTP リクエストによってトリガーされる Cloud Run 関数をデプロイする方法

7. クリーンアップ

誤って課金されないようにするには(たとえば、Cloud Run サービスが誤って 無料枠の Cloud Run 呼び出しの月間割り当てよりも多く呼び出された場合など)、Cloud Run を削除するか、ステップ 2 で作成したプロジェクトを削除します。

Cloud Run 関数を削除するには、https://console.cloud.google.com/run で Cloud Run Cloud Console に移動し、crf-http-codelab サービスを削除します。

プロジェクト全体を削除する場合は、https://console.cloud.google.com/cloud-resource-manager に移動し、ステップ 2 で作成したプロジェクトを選択して、[削除] を選択します。プロジェクトを削除した場合は、Cloud SDK でプロジェクトを変更する必要があります。gcloud projects list を実行すると、使用可能なすべてのプロジェクトのリストを表示できます。