Runtime Go

Fungsi Cloud Run Anda berjalan di lingkungan yang terdiri dari versi sistem operasi dengan paket add-on, dukungan bahasa, dan library Go Functions Framework yang mendukung dan memanggil fungsi Anda. Lingkungan ini diidentifikasi berdasarkan versi bahasa, dan dikenal sebagai ID runtime.

Persiapan fungsi

Anda dapat menyiapkan fungsi langsung dari Konsol Google Cloud atau menulisnya di komputer lokal, lalu menguploadnya. Guna menyiapkan mesin lokal untuk pengembangan Go, lihat Menyiapkan lingkungan pengembangan Go.

Runtime Go dan image dasar yang didukung

Runtime ID Runtime Stack Image dasar runtime
Go 1.23
(Khusus pratinjau)
go123
  • google-22 (default)
  • google-22-full
  • google-22/go123
  • google-22-full/go123
  • Go 1.22 go122
  • google-22 (default)
  • google-22-full
  • google-22/go122
  • google-22-full/go122
  • Go 1.21 go121
  • google-22 (default)
  • google-22-full
  • google-22/go121
  • google-22-full/go121
  • Go 1.20 go120
  • google-22 (default)
  • google-22-full
  • google-22/go120
  • google-22-full/go120
  • Go 1.19 go119
  • google-22 (default)
  • google-22-full
  • google-22/go119
  • google-22-full/go119
  • Go 1.18 go118
  • google-22 (default)
  • google-22-full
  • google-22/go118
  • google-22-full/go120
  • Go 1.16 go116 google-18-full google-18-full/go116
    Go 1.13 go113 google-18-full google-18-full/go113
    Go 1.11 go111 Dinonaktifkan Dinonaktifkan

    Memilih runtime Anda

    Anda dapat memilih salah satu runtime Go yang didukung untuk fungsi Anda selama deployment.

    Anda dapat memilih versi runtime menggunakan Konsol Google Cloud, atau gcloud CLI. Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda:

    gcloud

    Tentukan image dasar Go untuk fungsi Anda menggunakan flag --base-image, saat men-deploy fungsi. Contoh:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image go122
    

    Ganti:

    • FUNCTION dengan nama fungsi yang Anda deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.

    • FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.

    Untuk mendapatkan petunjuk mendetail tentang cara men-deploy fungsi menggunakan gcloud CLI, lihat Men-deploy fungsi di Cloud Run.

    Konsol

    Anda dapat memilih versi runtime saat membuat atau memperbarui fungsi Cloud Run di konsol Google Cloud. Untuk mengetahui petunjuk mendetail tentang cara men-deploy fungsi, lihat Men-deploy fungsi di Cloud Run.

    Untuk memilih runtime di konsol Google Cloud saat membuat fungsi, ikuti langkah-langkah berikut:

    1. Di konsol Google Cloud, buka halaman Cloud Run:

      Buka Cloud Run

    2. Klik Tulis fungsi.

    3. Dalam daftar Runtime, pilih versi runtime Go.

    4. Klik Create, dan tunggu Cloud Run membuat layanan menggunakan revisi placeholder.

    5. Konsol akan mengalihkan Anda ke tab Sumber, tempat Anda dapat melihat kode sumber fungsi. Klik Simpan dan deploy ulang.

    Untuk petunjuk mendetail tentang cara mengupdate versi runtime setelah fungsi Anda di-deploy, lihat Men-deploy ulang kode sumber baru.

    Struktur kode sumber

    Agar fungsi Cloud Run dapat menemukan definisi fungsi Anda, kode sumber harus mengikuti struktur tertentu. Lihat artikel Menulis fungsi Cloud Run untuk mengetahui informasi selengkapnya.

    Menentukan dependensi

    Fungsi Cloud Run di Go harus menyediakan semua dependensinya dengan modul Go dan file go.mod, atau dengan direktori vendor. Untuk mengetahui informasi selengkapnya, lihat Menentukan dependensi di Go.

    Variabel lingkungan

    Runtime Go akan otomatis menetapkan variabel lingkungan tertentu untuk digunakan fungsi Anda sesuai kebutuhan. Untuk mengetahui detailnya, lihat Mengonfigurasi variabel lingkungan.

    Jenis Context

    Paket context Go menentukan jenis Context, yang memiliki batas waktu, sinyal pembatalan, dan nilai cakupan permintaan lainnya di seluruh batas API dan antar-proses.

    Kode berikut menunjukkan contoh akses konteks oleh klien Pub/Sub:

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"context"
    	"fmt"
    	"log"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    	"github.com/cloudevents/sdk-go/v2/event"
    )
    
    func init() {
    	functions.CloudEvent("HelloPubSub", helloPubSub)
    }
    
    // MessagePublishedData contains the full Pub/Sub message
    // See the documentation for more details:
    // https://cloud.google.com/eventarc/docs/cloudevents#pubsub
    type MessagePublishedData struct {
    	Message PubSubMessage
    }
    
    // PubSubMessage is the payload of a Pub/Sub event.
    // See the documentation for more details:
    // https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
    type PubSubMessage struct {
    	Data []byte `json:"data"`
    }
    
    // helloPubSub consumes a CloudEvent message and extracts the Pub/Sub message.
    func helloPubSub(ctx context.Context, e event.Event) error {
    	var msg MessagePublishedData
    	if err := e.DataAs(&msg); err != nil {
    		return fmt.Errorf("event.DataAs: %w", err)
    	}
    
    	name := string(msg.Message.Data) // Automatically decoded from base64.
    	if name == "" {
    		name = "World"
    	}
    	log.Printf("Hello, %s!", name)
    	return nil
    }