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.
Versions Go
Go 1.22 utilise des packs de création. 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.
Pour utiliser une version compatible de Go, vous devez:
Installez
gcloud CLI
version 420.0.0 ou ultérieure. Vous pouvez mettre à jour les outils de la CLI en exécutant la commandegcloud components update
. Pour afficher la version installée, vous pouvez exécuter la commandegcloud 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 fichiergo.mod
dans le même dossier que le fichierapp.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.
Incluez les paramètres
runtime_config
etoperating_system
dans votre fichierapp.yaml
pour spécifier un système d'exploitation.Facultatif : vous pouvez spécifier une version d'exécution en incluant le paramètre
runtime_version
dans votre fichierapp.yaml
. Par défaut, la dernière version de Go est utilisée si le paramètreruntime_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 utiliser la version 1.15 et les versions antérieures de Go, spécifiez une version dans le paramètre runtime
au format go1.x
dans votre fichier app.yaml
. 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
Compatibilité avec d'autres environnements d'exécution Go
Si vous devez utiliser une version de Go non compatible, vous pouvez créer un environnement d'exécution personnalisé et sélectionner une image de base valide avec la version de Go dont vous avez besoin.
Pour les images de base fournies par Google ou les images de base Docker Go, consultez la page Créer des environnements d'exécution personnalisés.
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.