Environnement d'exécution Go

Votre fonction Cloud Run s'exécute dans un environnement composé d'une version de système d'exploitation avec des packages de modules complémentaires, de langages acceptés ainsi que de la bibliothèque du framework Functions Go qui prend en charge et appelle votre fonction. Cet environnement est identifié par la version de langage et est appelé l'ID d'exécution.

Préparation de la fonction

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

Environnements d'exécution Go et images de base compatibles

Environnement d'exécution ID d'exécution Piles Image de base de l'environnement d'exécution Obsolescence Mise hors service
Go 1.26 go126
  • google-24 (par défaut)
  • google-24-full
  • google-24/go126
  • google-24-full/go126
  • Go 1.25 go125
  • google-22 (par défaut)
  • google-22-full
  • google-22/go125
  • google-22-full/go125
  • Go 1.24 go124
  • google-22 (par défaut)
  • google-22-full
  • google-22/go124
  • google-22-full/go124
  • 2026-09-02 2027-03-02
    Go 1.23
    go123
  • google-22 (par défaut)
  • google-22-full
  • google-22/go123
  • google-22-full/go123
  • 21/02/2026 21/08/2026
    Go 1.22 go122
  • google-22 (par défaut)
  • google-22-full
  • google-22/go122
  • google-22-full/go122
  • 28/01/2026 28/07/2026
    Go 1.21 go121
  • google-22 (par défaut)
  • google-22-full
  • google-22/go121
  • google-22-full/go121
  • 03/09/2025 03/03/2026
    Go 1.20 go120
  • google-22 (par défaut)
  • google-22-full
  • google-22/go120
  • google-22-full/go120
  • 2024-05-01 2025-05-01
    Go 1.19 go119
  • google-22 (par défaut)
  • google-22-full
  • google-22/go119
  • google-22-full/go119
  • 2024-04-30 2025-01-30
    Go 1.18 go118
  • google-22 (par défaut)
  • google-22-full
  • google-22/go118
  • google-22-full/go120
  • 2024-01-30 2025-01-30
    Go 1.16 go116 google-18-full google-18-full/go116 2024-01-30 2025-01-30
    Go 1.13 go113 google-18-full google-18-full/go113 2024-01-30 2025-01-30
    Go 1.11 go111 Hors service Hors service 2020-08-05 Févr. 2021

    Sélectionner votre environnement d'exécution

    Vous pouvez sélectionner l'un des environnements d'exécution Go compatibles pour votre fonction lors du déploiement.

    Vous pouvez sélectionner une version d'environnement d'exécution à l'aide de la Google Cloud console ou de la gcloud CLI. Cliquez sur l'onglet correspondant pour obtenir des instructions sur l'utilisation de l'outil de votre choix :

    gcloud

    Spécifiez l'image de base Go pour votre fonction à l'aide de l'option --base-image lors du déploiement de votre fonction. Exemple :

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

    Remplacez :

    • FUNCTION par le nom de la fonction que vous déployez. Vous pouvez omettre ce paramètre, mais dans ce cas le nom vous sera demandé.

    • FUNCTION_ENTRYPOINT par le point d'entrée de votre fonction dans votre code source. Il s'agit du code que Cloud Run exécute lorsque votre fonction s'exécute. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.

    Pour obtenir des instructions détaillées sur le déploiement d'une fonction à l'aide de la gcloud CLI, consultez Déployer des fonctions dans Cloud Run.

    Console

    Vous pouvez sélectionner une version d'environnement d'exécution lorsque vous créez ou mettez à jour une fonction Cloud Run dans la Google Cloud console. Pour obtenir des instructions détaillées sur le déploiement d'une fonction, consultez Déployer des fonctions dans Cloud Run.

    Pour sélectionner un environnement d'exécution dans la Google Cloud console lorsque vous créez une fonction, procédez comme suit :

    1. Dans la Google Cloud console, accédez à la page Cloud Run :

      Accédez à Cloud Run

    2. Cliquez sur Écrire une fonction.

    3. Dans la liste Environnement d'exécution, sélectionnez une version d'environnement d'exécution Go.

    4. Cliquez sur Créer, puis attendez que Cloud Run crée le service à l'aide d'une révision d'espace réservé.

    5. La console vous redirige vers l'onglet Source , où vous pouvez voir le code source de votre fonction. Cliquez sur Enregistrer et redéployer.

    Pour obtenir des instructions détaillées sur la mise à jour de la version de l'environnement d'exécution une fois votre fonction est déployée, consultez Redéployer un nouveau code source.

    Structure du code source

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

    Spécifier des dépendances

    Les fonctions Cloud Run écrites en Go doivent fournir toutes leurs 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.

    Variables d'environnement

    Votre environnement d'exécution Go définit automatiquement certaines variables d'environnement pour que votre fonction puisse les utiliser si nécessaire. Pour en savoir plus, consultez Configurer 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 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
    }