Environnement d'exécution Go

Présentation

Votre fonction Cloud Functions s'exécute dans un environnement composé d'une version de système d'exploitation, de packages complémentaires, d'une compatibilité avec les langages et de la bibliothèque du framework des fonctions compatible avec votre fonction. Cet environnement est identifié par la version de langage et est appelé l'environnement d'exécution.

Pour en savoir plus sur les environnements d'exécution en général et découvrir la version d'Ubuntu utilisée par chaque environnement d'exécution Go, consultez la page Environnement d'exécution Cloud Functions.

Sélectionner votre environnement d'exécution

Cloud Functions est compatible avec plusieurs versions de Go, répertoriées sur la page Compatibilité des environnements d'exécution. Vous pouvez sélectionner l'environnement d'exécution Go pour votre fonction lors du déploiement.

gcloud

Si vous utilisez Google Cloud CLI, spécifiez l'environnement d'exécution Go de votre choix à l'aide du paramètre --runtime. Exemple :

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

FLAGS... fait référence aux arguments transmis lors du premier déploiement de votre fonction. Pour en savoir plus sur les arguments obligatoires et facultatifs, consultez la page Déployer à l'aide de Google Cloud CLI.

Console

Si vous utilisez la console Google Cloud, consultez le guide de démarrage rapide de la console Google Cloud pour obtenir des instructions détaillées.

Préparation de la fonction

Vous pouvez préparer une fonction directement depuis la console Google Cloud ou l'écrire sur votre ordinateur local et l'importer. Pour préparer votre ordinateur local pour le développement Go, consultez la page Configurer votre environnement de développement.

Pour commencer à utiliser Go sur Cloud Functions rapidement, consultez le guide de démarrage rapide.

Structure du code source

Pour que Cloud Functions trouve la définition de votre fonction, votre code source doit suivre une structure spécifique. Pour en savoir plus, consultez la page Écrire des fonctions Cloud Functions.

Spécifier des dépendances

Cloud Functions dans Go doit fournir toutes ses dépendances avec des modules Go et un fichier go.mod, ou avec un répertoire vendor. Pour plus d'informations, consultez la page Spécifier des dépendances en Go.

Environment variables

Votre environnement d'exécution Go définit automatiquement certaines variables d'environnement que votre fonction doit utiliser. Pour en savoir plus, consultez la page Utiliser des variables d'environnement.

Type : Context

Le package context de Go définit le type de Context, qui contient des échéances, des signaux d'annulation et d'autres valeurs couvertes par les requêtes au-delà des limites de l'API et entre les processus.

Le code de 2e génération suivant illustre un exemple d'accès contextuel par 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
}