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

1. はじめに

概要

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

Cloud Run の関数を使用すると、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

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

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

  • –source フラグで、関数を実行可能なコンテナベースのサービスにビルドするよう Cloud Run に指示します
  • -function フラグ(new)を使用して、新しいサービスのエントリポイントを、呼び出す関数シグネチャとして設定します。
  • (省略可)-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 の関数に関するドキュメントを確認することをおすすめします。

学習した内容

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

7. クリーンアップ

不注意による料金の発生(たとえば、Cloud Run サービスが誤って無料枠の毎月の Cloud Run 呼び出し割り当てよりも多く呼び出された場合)を回避するには、Cloud Run を削除するか、手順 2 で作成したプロジェクトを削除します。

Cloud Run 関数を削除するには、Cloud Run Cloud コンソール(https://console.cloud.google.com/run)に移動して crf-http-codelab サービスを削除します。

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