Runtime Go

Ringkasan

Fungsi Cloud Run Anda berjalan di lingkungan yang terdiri dari versi sistem plus paket add-on, dukungan bahasa, dan {i>library<i} Functions Framework yang mendukung dan memanggil fungsi Anda. Lingkungan ini diidentifikasi berdasarkan versi bahasa, dan dikenal sebagai runtime.

Untuk informasi tentang {i>runtime<i} secara umum, dan untuk mempelajari versi Ubuntu mana yang digunakan oleh setiap runtime Go, lihat Lingkungan eksekusi fungsi Cloud Run.

Memilih runtime Anda

Fungsi Cloud Run mendukung beberapa versi Go, yang tercantum di Halaman Dukungan runtime. Anda dapat memilih runtime Go yang diinginkan untuk fungsi Anda selama deployment.

gcloud

Jika menggunakan Google Cloud CLI, tentukan runtime menggunakan parameter --runtime dengan runtime Go pilihan Anda. Contoh:

gcloud functions deploy FUNCTION_NAME --runtime go121 FLAGS...

FLAGS... merujuk pada argumen yang diteruskan selama deployment pertama fungsi Anda. Untuk informasi lebih lanjut tentang wajib dan argumen opsional, lihat Men-deploy fungsi Cloud Run.

Konsol

Jika Anda menggunakan Google Cloud Console, lihat panduan memulai Google Cloud Console untuk mengetahui petunjuk mendetail.

Persiapan fungsi

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

Untuk memulai fungsi Go on Cloud Run dengan cepat, lihat Panduan memulai.

Struktur kode sumber

Agar fungsi Cloud Run dapat menemukan definisi fungsi Anda, kode sumber harus mengikuti struktur tertentu. Lihat Menulis fungsi Cloud Run untuk 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 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 Menggunakan 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 fungsi Cloud Run berikut menunjukkan contoh akses konteks melalui 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
}