Go-Laufzeit

Überblick

Die Cloud Functions-Funktion wird in einer Umgebung ausgeführt, die aus einer Betriebssystemversion, Add-on-Paketen, Sprachunterstützung und der Functions Framework-Bibliothek besteht, die Ihre Funktion unterstützt und aufruft. Diese Umgebung wird durch die Sprachversion identifiziert und als Laufzeit bezeichnet.

Informationen zu Laufzeiten im Allgemeinen und dazu, welche Ubuntu-Version jede Go-Laufzeit verwendet, finden Sie in der Ausführungsumgebung von Cloud Functions.

Laufzeit auswählen

Cloud Functions unterstützt mehrere Versionen von Go, die auf der Seite Laufzeitsupport aufgeführt sind. Sie können die bevorzugte Go-Laufzeit für Ihre Funktion während der Bereitstellung auswählen.

gcloud

Wenn Sie die Google Cloud CLI verwenden, geben Sie die Laufzeit mit dem Parameter --runtime mit der Go-Laufzeit Ihrer Wahl an. Beispiel:

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

FLAGS... bezieht sich auf Argumente, die bei der erstmaligen Bereitstellung der Funktion übergeben wurden. Weitere Informationen zu erforderlichen und optionalen Argumenten finden Sie unter Über die Google Cloud CLI bereitstellen.

Console

Wenn Sie die Google Cloud Console verwenden, finden Sie weitere Informationen in der Google Cloud Console-Kurzanleitung.

Funktionsvorbereitung

Sie können eine Funktion direkt über die Google Cloud Console vorbereiten oder auf Ihren lokalen Computer schreiben und hochladen. Informationen zum Vorbereiten Ihres lokalen Computers für die Go-Entwicklung finden Sie unter Go-Entwicklungsumgebung einrichten.

Informationen zu den ersten Schritten mit Go in Cloud Functions finden Sie in der Kurzanleitung.

Struktur des Quellcodes

Damit Cloud Functions die Definition Ihrer Funktion findet, muss Ihr Quellcode einer bestimmten Struktur entsprechen. Weitere Informationen finden Sie unter Cloud Functions-Funktionen schreiben.

Abhängigkeiten angeben

Alle Abhängigkeiten von Cloud Functions in Go müssen entweder mit Go-Modulen und einer go.mod-Datei oder mit einem vendor-Verzeichnis bereitgestellt werden. Weitere Informationen finden Sie unter Abhängigkeiten in Go angeben.

Umgebungsvariablen

Ihre Go-Laufzeit legt automatisch bestimmte Umgebungsvariablen fest, die Ihre Funktion nach Bedarf verwenden kann. Weitere Informationen finden Sie unter Umgebungsvariablen verwenden.

Context Typ

Mit dem context-Paket von Go wird der Context-Typ definiert, der Fristen, Abbruchsignale und andere auf Anfragen bezogene Werte über API-Grenzen hinweg und zwischen Prozessen überträgt.

Der folgende Code der 2. Generation zeigt ein Beispiel für den Kontextzugriff durch einen Pub/Sub-Client:


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