Runtime di Go

Panoramica

La funzione Cloud Run viene eseguita in un ambiente costituito da un sistema operativo la versione del sistema più i pacchetti aggiuntivi, il supporto lingue e la libreria Functions Framework che supporta e richiama la funzione. Questo ambiente è identificato dalla versione in lingua ed è noto come runtime.

Per informazioni sui runtime in generale e per sapere quale versione di Ubuntu utilizzato da ciascun runtime Go, Ambiente di esecuzione delle funzioni di Cloud Run.

Seleziona il runtime

Le funzioni di Cloud Run supportano diverse versioni di Go, elencate nella Pagina di supporto del runtime. Puoi seleziona il runtime Go preferito per la tua funzione durante il deployment.

gcloud

Se utilizzi Google Cloud CLI, specifica il runtime utilizzando il parametro --runtime con il runtime Go di tua scelta. Ad esempio:

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

FLAGS... si riferisce agli argomenti passati durante il primo del deployment della funzione. Per ulteriori informazioni sui argomenti facoltativi, vedi Esegui il deployment di una funzione Cloud Run.

Console

Se utilizzi la console Google Cloud, consulta le Guida rapida della console Google Cloud per istruzioni dettagliate.

Preparazione della funzione

Puoi preparare una funzione direttamente dalla console Google Cloud o scriverla sul tuo macchina locale e caricarlo. Per preparare il tuo computer locale per lo sviluppo Go, consulta la sezione Configurazione di un ambiente di sviluppo Go.

Per iniziare rapidamente a utilizzare le funzioni Go su Cloud Run, consulta il Guida rapida.

Struttura del codice sorgente

Affinché le funzioni Cloud Run trovino la definizione della tua funzione, è necessario il codice sorgente deve seguire una struttura specifica. Consulta: Scrittura di funzioni Cloud Run per ulteriori informazioni.

Specifica delle dipendenze

Le funzioni Cloud Run in Go devono fornire tutte le loro dipendenze con Moduli Go e un file go.mod o con una directory vendor. Per ulteriori informazioni, consulta la sezione Specificare le dipendenze in Go.

Variabili di ambiente

Il runtime di Go imposta automaticamente determinate variabili di ambiente per la funzione da utilizzare in base alle esigenze. Per maggiori dettagli, vedi Utilizzo delle variabili di ambiente.

Tipo di Context

Il pacchetto context di Go definisce Context che include scadenze, indicatori di annullamento e altri ambiti relativi alle richieste oltre i confini delle API e tra i processi.

Il seguente codice delle funzioni Cloud Run mostra un esempio di accesso al contesto da parte di un Client 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
}