Membuat dan men-deploy fungsi Cloud Run HTTP dengan .NET

Panduan ini akan memandu Anda dalam proses penulisan fungsi Cloud Run menggunakan C# bahasa runtime .NET. Ada dua jenis fungsi Cloud Run:

  • Fungsi HTTP, yang Anda panggil dari permintaan HTTP standar.
  • Fungsi berbasis peristiwa, yang dipicu oleh peristiwa di infrastruktur Cloud Anda, seperti pesan pada topik Pub/Sub atau perubahan dalam bucket Cloud Storage.

Untuk mengetahui detail selengkapnya, baca artikel tentang menulis fungsi HTTP dan menulis fungsi berbasis peristiwa.

Sebelum memulai

  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, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging 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, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.

    Enable the APIs

  8. Instal dan lakukan inisialisasi Google Cloud SDK.
  9. Update dan instal komponen gcloud dengan perintah berikut.
    gcloud components update
  10. Siapkan lingkungan pengembangan Anda.

    Buka panduan penyiapan .NET

Membuat fungsi

Bagian ini menjelaskan cara membuat fungsi .NET secara manual. Atau, Anda dapat menggunakan template Functions Framework) untuk membuat fungsi.

Untuk membuat fungsi:

  1. Buat direktori di sistem lokal Anda untuk kode fungsi:

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    

    Linux atau Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    
  2. Buat file bernama Function.cs di direktori helloworld dengan konten berikut:

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld;
    
    public class Function : IHttpFunction
    {
        public async Task HandleAsync(HttpContext context)
        {
            await context.Response.WriteAsync("Hello World!", context.RequestAborted);
        }
    }

Menentukan dependensi

Fungsi Cloud Run memerlukan sekumpulan library yang disebut Functions Framework. Agar Functions Framework tersedia untuk build Anda, lakukan langkah-langkah berikut:

  1. Ubah direktori ke direktori helloworld yang baru saja Anda buat:

     cd ~/helloworld
    
  2. Buat file bernama HelloWorld.csproj di direktori helloworld dengan konten berikut:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.2.1" />
      </ItemGroup>
    </Project>

Untuk mempelajari cara menyediakan library lain untuk build Anda, baik melalui file project maupun dalam kode melalui injeksi dependensi, lihat Penyesuaian melalui class Functions Startup.

Membangun dan menguji fungsi secara lokal

  1. Bangun dan jalankan fungsi Anda secara lokal dengan perintah berikut:

    dotnet run
    
  2. Uji fungsi Anda dengan membuka http://localhost:8080 di browser atau dengan menjalankan curl localhost:8080 dari jendela lain. Jika Anda menggunakan Cloud Shell, klik ikon Tombol Web Preview dan pilih Preview on port 8080 untuk melihat output fungsi.

    Lihat Mengirim permintaan ke fungsi lokal untuk mengetahui detail selengkapnya.

Men-deploy fungsi

Untuk men-deploy fungsi Anda, jalankan perintah berikut di direktori helloworld:

  gcloud functions deploy csharp-http-function \
    --gen2 \
    --entry-point=HelloWorld.Function \
    --runtime=dotnet8 \
    --region=REGION \
    --source=. \
    --trigger-http \
    --allow-unauthenticated

Ganti REGION dengan nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya us-west1).

csharp-http-function adalah nama terdaftar yang akan digunakan untuk mengidentifikasi fungsi Anda di Konsol Google Cloud, dan --entry-point menentukan nama class yang sepenuhnya memenuhi syarat (FQN) dari fungsi Anda.

Flag --allow-unauthenticated opsional memungkinkan Anda menjangkau fungsi tanpa autentikasi.

Menguji fungsi yang di-deploy

  1. Setelah fungsi di-deploy, catat properti uri dari output perintah gcloud functions deploy, atau ambil dengan perintah berikut:

    gcloud functions describe csharp-http-function \
      --region=REGION
    

    Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya, us-west1).

  2. Uji fungsi Anda dengan membuka http://localhost:8080 di browser atau dengan menjalankan curl localhost:8080 dari jendela lain.

    Lihat Mengirim permintaan ke fungsi lokal untuk mengetahui detail selengkapnya.

Melihat log fungsi Anda

Melihat log dengan alat command line

Anda dapat meninjau log fungsi dengan UI Cloud Logging atau melalui Google Cloud CLI.

Untuk melihat log fungsi Anda dengan gcloud CLI, gunakan perintah logs read:

  gcloud functions logs read \
    --gen2 \
    --limit=10 \
    --region=REGION \
    csharp-http-function

Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya us-west1).

Outputnya akan terlihat seperti berikut:

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 - -

Melihat log dengan dasbor logging

Untuk melihat log fungsi Anda dengan dasbor logging, buka halaman Ringkasan fungsi Cloud Run, lalu klik nama fungsi Anda dari daftar, lalu klik tab Log.

Membuat fungsi dengan paket template

Petunjuk ini telah membantu Anda membuat fungsi sederhana. Dalam praktiknya, Anda mungkin akan memilih menggunakan template Functions Framework untuk membuat fungsi.

Untuk menggunakan template Functions Framework guna membuat, membangun, dan menguji fungsi:

  1. Instal .NET SDK. Langkah ini dapat dilewati jika Anda menggunakan Cloud Shell.

  2. Instal paket template:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Buat direktori untuk project Anda, dan fungsi HTTP kosong:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Tindakan ini akan membuat HelloFunctions.csproj dan Function.cs dalam direktori saat ini. Buka Function.cs untuk meninjau kode, dan berikan pesan kustom jika ingin.

  4. Jika ingin, ikuti petunjuk sebelumnya untuk membangun dan menguji fungsi secara lokal.

  5. Jalankan perintah gcloud deploy berikut untuk men-deploy fungsi Anda:

    gcloud functions deploy HelloFunctions.Function \
      --gen2 \
      --entry-point=HelloWorld.Function \
      --runtime=dotnet8 \
      --region=REGION \
      --source=. \
      --trigger-http \
      --allow-unauthenticated
    

    Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya, us-west1).

Untuk informasi selengkapnya tentang Functions Framework, lihat dokumentasi Functions Framework.