Environnement d'exécution Go

L'environnement d'exécution Go est la pile logicielle chargée d'installer le code et les dépendances de votre application, puis d'exécuter cette application dans l'environnement flexible.

  • Les versions 1.18 et ultérieures sont créées à l'aide de packs de création, ce qui nécessite de choisir un système d'exploitation dans votre fichier app.yaml. Par exemple, pour utiliser Go 1.22, vous devez spécifier Ubuntu 22 comme système d'exploitation.

  • Les versions 1.15 et antérieures sont créées à l'aide de Docker.

Pour obtenir la liste complète des versions de Go compatibles, ainsi que la version d'Ubuntu correspondante, consultez la page Programmation de la compatibilité avec l'environnement d'exécution.

Choisir une version de Go

Nouvelles versions de l'environnement d'exécution

Pour les versions 1.18 et ultérieures de l'environnement d'exécution Go, vous devez inclure les paramètres runtime_config etoperating_system dans votre fichier app.yaml pour spécifier un système d'exploitation.

Pour utiliser les nouveaux environnements d'exécution, vous devez installer les versions 420.0.0 ou ultérieures de gcloud CLI. Vous pouvez mettre à jour les outils de la CLI en exécutant la commande gcloud components update. Pour afficher la version installée, vous pouvez exécuter la commande gcloud version.

Go vous recommande d'utiliser un fichier go.mod pour gérer les dépendances. Pour installer des dépendances lors du déploiement, incluez un fichier go.mod dans le même dossier que le fichier app.yaml.

Par exemple, la structure de dossiers de votre application avec go.mod doit représenter :

  <application-root>/
  --> app.yaml
  --> go.mod
  --> Other source files used in your application.

Facultatif : vous pouvez spécifier une version d'exécution en incluant le paramètre runtime_version dans votre fichier app.yaml. Par défaut, la dernière version de Go est utilisée si le paramètre runtime_version n'est pas spécifié.

Exemples

  • Pour spécifier Go 1.22 sur Ubuntu 22 :

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.22"
    
  • Pour spécifier la dernière version compatible de Go sur Ubuntu 22, procédez comme suit :

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

Votre application utilise la dernière version stable de la version spécifiée dans votre fichier app.yaml. App Engine se met automatiquement à jour en cas de nouvelles révisions correctives, mais pas en cas de nouvelle version majeure.

Par exemple, votre application peut être déployée sur Go 1.18.10 et faire ultérieurement l'objet d'une mise à jour automatique vers Go 1.18.11, mais elle ne sera pas automatiquement mise à jour vers la version majeure Go 1.19.

Si vous choisissez Go 1.22 dans votre fichier app.yaml, la dernière version de patch de Go 1.22 disponible est utilisée.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.22"

Pour plus d'informations, consultez la documentation de référence du fichier app.yaml.

Versions précédentes de l'environnement d'exécution

Pour la version 1.15 et les versions antérieures de Go, vous spécifiez une version au format go1.x dans le fichier de configuration app.yaml en tant que runtime: go1.x :

Exemple

  runtime: go1.14
  env: flex

Si aucune version n'est spécifiée, la version par défaut de go1.11 est automatiquement sélectionnée.

Votre application utilise la dernière version stable de la version spécifiée dans votre fichier app.yaml. App Engine se met automatiquement à jour en cas de nouvelles révisions correctives, mais pas en cas de nouvelle version majeure.

Par exemple, votre application peut être déployée sur Go 1.14.10 et faire ultérieurement l'objet d'une mise à jour automatique vers Go 1.14.11, mais elle ne sera pas automatiquement mise à jour vers la version majeure Go 1.15.

Si vous choisissez la version go1.15 de l'environnement d'exécution Go dans votre fichier app.yaml, la dernière version 1.15 disponible est utilisée, par exemple la version 1.15.15.

  runtime: go1.15
  env: flex

Importer des packages

Votre code se compile lorsque vous déployez votre application sur App Engine. Lorsque vous exécutez la commande de déploiement, les dépendances de votre application sont d'abord collectées à partir de votre GOPATH local, puis elles sont toutes envoyées au serveur de construction. Toutes les dépendances manquantes, par exemple les bibliothèques tierces, entraînent des échecs de compilation.

Pour éviter les échecs de compilation et vous assurer que toutes les dépendances de votre application sont déployées avec votre code, vous devez tester votre application localement avant de la déployer.

Étendre l'environnement d'exécution

Pour obtenir des instructions sur la manière d'étendre et de personnaliser l'environnement d'exécution Go, consultez la page sur le compilateur de l'environnement d'exécution Go sur GitHub.

Serveur de métadonnées

Chaque instance de votre application peut utiliser le serveur de métadonnées Compute Engine pour demander des informations sur l'instance, y compris son nom d'hôte, son adresse IP externe, son ID d'instance, ses métadonnées personnalisées et ses informations de compte de service. App Engine ne vous permet pas de définir des métadonnées personnalisées pour chaque instance, mais vous pouvez définir des métadonnées personnalisées à l'échelle du projet et les lire à partir de vos instances App Engine et Compute Engine.

Utilisez le package cloud.google.com/go/compute/metadata pour accéder au serveur de métadonnées.