NET で HTTP Cloud Functions を作成してデプロイする
このガイドでは、.NET ランタイム言語の C# を使用して Cloud Functions の関数を記述するプロセスを説明します。Cloud Functions の関数には次の 2 つのタイプがあります。
- HTTP 関数。標準的な HTTP リクエストから呼び出します。
- イベント ドリブン関数。Pub/Sub トピック上のメッセージや Cloud Storage バケット内の変更など、Cloud インフラストラクチャのイベントによってトリガーされます。
詳細については、HTTP 関数の作成とイベント ドリブン関数の作成をご覧ください。
準備
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Functions、Cloud Build、Artifact Registry、Cloud Run、and Cloud Logging API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Functions、Cloud Build、Artifact Registry、Cloud Run、and Cloud Logging API を有効にします。
- 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 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=dotnet6 \
--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 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=dotnet6 \ --region=REGION \ --source=. \ --trigger-http \ --allow-unauthenticated
REGION は、関数をデプロイした Google Cloud リージョンの名前(例:
us-west1
)に置き換えます。
Functions Framework の詳細については、Functions Framework のドキュメントをご覧ください。