クイックスタート: .NET で Cloud Functions の関数を作成してデプロイする

.NET で Cloud Functions の関数を作成してデプロイする

Cloud Functions は、クラウド サービスの作成と接続に使用できるサーバーレスの実行環境です。Cloud Functions を使用すると、クラウドのインフラストラクチャやサービスで生じたイベントに関連する、単一目的のシンプルな関数を作成できます。関数は、HTTP リクエストが外部に送信されるか、監視対象のイベントが発生するとトリガーされます。

Cloud Console を使用して .NET Core 3.1 で Cloud Functions の関数を作成し、デプロイする方法を説明します。


このタスクを Cloud Console で直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


以降のセクションでは、[ガイドを表示] をクリックした場合と同じ手順について説明します。

この C# 関数は、HTTP リクエストによってトリガーされると次のメッセージを書き込みます。

using Google.Cloud.Functions.Framework;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System.IO;
using System.Text.Json;
using System.Threading.Tasks;

namespace SimpleHttpFunction
{
    public class Function : IHttpFunction
    {
        private readonly ILogger _logger;

        public Function(ILogger<Function> logger) =>
            _logger = logger;

        public async Task HandleAsync(HttpContext context)
        {
            HttpRequest request = context.Request;
            // Check URL parameters for "message" field
            string message = request.Query["message"];

            // If there's a body, parse it as JSON and check for "message" field.
            using TextReader reader = new StreamReader(request.Body);
            string text = await reader.ReadToEndAsync();
            if (text.Length > 0)
            {
                try
                {
                    JsonElement json = JsonSerializer.Deserialize<JsonElement>(text);
                    if (json.TryGetProperty("message", out JsonElement messageElement) &&
                        messageElement.ValueKind == JsonValueKind.String)
                    {
                        message = messageElement.GetString();
                    }
                }
                catch (JsonException parseException)
                {
                    _logger.LogError(parseException, "Error parsing JSON request");
                }
            }

            await context.Response.WriteAsync(message ?? "Hello World!");
        }
    }
}

始める前に

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

関数を作成する

  1. Cloud Console で Functions の概要ページを開きます。

    Cloud Functions の概要ページに移動

    Cloud Functions を有効にしたプロジェクトが選択されていることを確認します。

  2. [関数を作成] をクリックします。

  3. 関数に名前を付けます。

  4. [トリガー] フィールドで、[HTTP] を選択します。

  5. [認証] フィールドで、[未認証の呼び出しを許可する] を選択します。

  6. [保存] をクリックして変更を保存し、[次へ] をクリックします。

  7. [ソースコード] フィールドで [インライン エディタ] を選択します。この演習では、エディタで提供されているデフォルト関数を使用します。

  8. [ランタイム] プルダウンで、.NET Core 3.1 ランタイムを選択します。

関数をデプロイする

  1. ページの下部にある [デプロイ] をクリックします。

  2. [デプロイ] をクリックすると、Cloud Console に Cloud Functions の概要ページが表示されます。

    関数のデプロイ中は、関数の横に小さいスピナーのアイコンが表示されます。デプロイが完了すると、スピナーが緑のチェックマークに変わります。

    関数のデプロイ プロセスを示すスクリーンショット

関数をテストする

  1. 関数のメニューを表示して、[関数をテスト] をクリックします。

    関数のテストプロセスを示すスクリーンショット

  2. テストページで、[関数をテスト] をクリックします。

    [出力] 画面にテキスト "Hello World!" が表示されます。

  3. ここで、メッセージを変更します。[トリガーとなるイベント] フィールドに、テキスト「{"message":"Hello, YOUR_NAME!"}」を入力し(YOUR_NAME は名前に置き換えてください)、[関数をテスト] をクリックします。

    たとえば、「Rowan」という名前を入力したとします。[出力] フィールドに、「Hello, Rowan!」というメッセージが表示されます。

    [ログ] フィールドにステータス コード 200 が表示されていれば、成功しています。

    [ログ] フィールドに成功を示すコード 200 が表示されているスクリーンショット

ログを表示する

ログ履歴内のアクションを確認するには、ログを開いてチェックします。

  • Cloud Functions の概要ページに戻り、関数のメニューを表示し、[ログを表示] をクリックします。

ログの履歴が表示されます。

[ログ] フィールドに成功を示すコード 200 が表示されているスクリーンショット

次のステップ