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
を実行します。