クイックスタート: .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. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud Functions and Cloud Build API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Cloud Functions and Cloud Build API を有効にします。

    API を有効にする

関数を作成する

  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 が表示されているスクリーンショット

次のステップ