.NET で Cloud Run functions の HTTP 関数を作成してデプロイする
このガイドでは、.NET ランタイム言語の C# を使用して Cloud Run functions を記述するプロセスを説明します。Cloud Run functions には次の 2 つのタイプがあります。
- HTTP 関数。標準的な HTTP リクエストから呼び出します。
- イベント ドリブン関数。Pub/Sub トピック上のメッセージや Cloud Storage バケット内の変更など、Cloud インフラストラクチャのイベントによってトリガーされます。
詳しくは、HTTP 関数の作成とイベント ドリブン関数の作成をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
- Google Cloud SDK をインストールして初期化します。
- 次のコマンドを使用して、
gcloud
コンポーネントを更新してインストールします。gcloud components update
-
開発環境を準備します。
関数を作成する
このセクションでは、.NET 関数を手動で作成する方法について説明します。Functions Framework テンプレートを使用して関数を作成することもできます。
関数を作成するには:
関数コードで使用するため、ローカル システムにディレクトリを作成します。
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Linux / Mac OS X
mkdir ~/helloworld cd ~/helloworld
helloworld
ディレクトリに、次の内容のファイルをFunction.cs
という名前で作成します。
依存関係を指定する
Cloud Run functions の関数には、Functions Framework と呼ばれるライブラリのセットが必要です。Functions Framework をビルドで使用できるようにするには、次の操作を実行します。
作成した
helloworld
ディレクトリに移動します。cd ~/helloworld
helloworld
ディレクトリに、次の内容のファイルをHelloWorld.csproj
という名前で作成します。
プロジェクト ファイルを使用、または依存関係の挿入を使用してコード内で他のライブラリをビルドで使用できるようにする場合は、Functions スタートアップ クラスを使用したカスタマイズをご覧ください。
ローカルで関数をビルドしてテストする
次のコマンドを使用して、関数をローカルでビルドして実行します。
dotnet run
ブラウザで
http://localhost:8080
にアクセスするか、別のウィンドウからcurl localhost:8080
を実行して、関数をテストします。Cloud Shell を使用している場合は、 アイコンをクリックして [ポート 8080 でプレビュー] を選択し、関数の出力を表示します。詳細については、ローカル関数にリクエストを送信するをご覧ください。
関数をデプロイする
関数をデプロイするには、helloworld
ディレクトリで次のコマンドを実行します。
gcloud functions deploy csharp-http-function \
--gen2 \
--entry-point=HelloWorld.Function \
--runtime=dotnet8 \
--region=REGION \
--source=. \
--trigger-http \
--allow-unauthenticated
REGION は、関数をデプロイする Google Cloud リージョンの名前に置き換えます(us-west1
など)。
csharp-http-function
は関数が Google Cloud コンソールで識別される登録名で、--entry-point
は関数の完全修飾クラス名(FQN)を指定します。
オプションの --allow-unauthenticated
フラグを使用すると、認証なしで関数にアクセスできます。
デプロイした関数をテストする
関数がデプロイされたら、
gcloud functions deploy
コマンドの出力でuri
プロパティをメモするか、次のコマンドを使用して取得します。gcloud functions describe csharp-http-function \ --region=REGION
REGION は、関数をデプロイした Google Cloud リージョンの名前に置き換えます(
us-west1
など)。ブラウザで
http://localhost:8080
にアクセスするか、別のウィンドウからcurl localhost:8080
を実行して、関数をテストします。詳細については、ローカル関数にリクエストを送信するをご覧ください。
関数のログを表示する
コマンドライン ツールを使用してログを表示する
関数のログは、Cloud Logging UI または Google Cloud CLI で確認できます。
gcloud CLI を使用して関数のログを表示するには、logs read
コマンドを使用します。
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
csharp-http-function
REGION は、関数をデプロイした Google Cloud リージョンの名前に置き換えます(us-west1
など)。
出力は次のようになります。
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.221
LOG: Request finished HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - - - 404 0 - 0.9393ms
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.220
LOG: Request starting HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - -
ロギング ダッシュボードでログを表示する
ロギング ダッシュボードで関数のログを表示するには、Cloud Run functions の概要ページを開き、リストから関数の名前をクリックして、[ログ] タブをクリックします。
テンプレート パッケージを使用して関数を作成する
これまで手順は、簡単な関数を作成するため便利なものでした。実践では、Functions Framework テンプレートを使用して関数を作成するほうが便利でしょう。
Functions Framework テンプレートを使用して関数を作成、ビルド、テストするには:
.NET SDK をインストールします。Cloud Shell を使用している場合は、この手順をスキップできます。
テンプレート パッケージをインストールします。
dotnet new install Google.Cloud.Functions.Templates
プロジェクト用のディレクトリと、空の HTTP 関数を作成します。
mkdir HelloFunctions cd HelloFunctions dotnet new gcf-http
これにより、
HelloFunctions.csproj
とFunction.cs
が現在のディレクトリに作成されます。Function.cs
を開いてコードを確認し、必要に応じてカスタム メッセージを入力します。必要に応じて、上記の手順に沿って関数をローカルでビルドしてテストします。
次の
gcloud deploy
コマンドを実行して、関数をデプロイします。gcloud functions deploy HelloFunctions.Function \ --gen2 \ --entry-point=HelloWorld.Function \ --runtime=dotnet8 \ --region=REGION \ --source=. \ --trigger-http \ --allow-unauthenticated
REGION は、関数をデプロイした Google Cloud リージョンの名前に置き換えます(
us-west1
など)。
Functions Framework の詳細については、Functions Framework のドキュメントをご覧ください。