Environnement d'exécution Go

L'environnement d'exécution Go est la pile logicielle chargée d'installer le code de votre service Web et ses dépendances, et d'exécuter votre service.

L'environnement d'exécution Go dans l'environnement standard App Engine est déclaré dans le fichier app.yaml :

runtime: goVERSION

VERSION correspond aux numéros de version Go MAJOR et MINOR. Par exemple, pour utiliser la dernière version de Go, Go 1.23 (preview), spécifiez 123.

Pour les autres versions de Go compatibles, ainsi que pour la version d'Ubuntu correspondante pour votre version de Go, consultez la section Calendrier de compatibilité des environnements d'exécution.

Version Go

L'environnement d'exécution Go 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 la version mineure Go 1.13.1 et faire ultérieurement l'objet d'une mise à jour automatique vers la version 1.13.2, mais elle ne sera pas automatiquement mise à jour vers la version majeure Go 1.14.

Dépendances

Pour en savoir plus sur la déclaration et la gestion des dépendances, consultez la page Spécifier des dépendances.

Variables d'environnement

Les variables d'environnement suivantes sont définies par l'environnement d'exécution :

Variable d'environnement Description
GAE_APPLICATION ID de votre application App Engine. Cet ID est précédé du préfixe "region code~", tel que "e~" pour les applications déployées en Europe.
GAE_DEPLOYMENT_ID ID du déploiement actuel.
GAE_ENV Environnement App Engine. Variable définie sur standard.
GAE_INSTANCE ID de l'instance sur laquelle votre service est en cours d'exécution.
GAE_MEMORY_MB Quantité de mémoire disponible pour le processus d'application, en Mo.
GAE_RUNTIME Environnement d'exécution spécifié dans le fichier app.yaml.
GAE_SERVICE Nom de service spécifié dans le fichier app.yaml. Si aucun nom de service n'est spécifié, il est défini par défaut sur default.
GAE_VERSION Libellé de la version actuelle du service.
GOOGLE_CLOUD_PROJECT ID du projet Google Cloud associé à votre application.
PORT Port qui reçoit les requêtes HTTP.
NODE_ENV (disponible uniquement dans l'environnement d'exécution Node.js) Variable définie sur production lorsque votre service est déployé.

Vous pouvez définir des variables d'environnement supplémentaires dans le fichier app.yaml, mais les valeurs ci-dessus ne peuvent pas être remplacées, sauf NODE_ENV.

HTTPS et proxy de transfert

App Engine met fin aux connexions HTTPS au niveau de l'équilibreur de charge et transfère les requêtes à votre application. Certaines applications doivent déterminer l'adresse IP et le protocole de la requête d'origine. L'adresse IP de l'utilisateur est disponible dans l'en-tête standard X-Forwarded-For. Les applications nécessitant ces informations doivent configurer leur framework Web pour qu'il fasse confiance au proxy.

Système de fichiers

L'environnement d'exécution comprend un répertoire /tmp accessible en écriture, tous les autres répertoires ayant un accès en lecture seule. Le fait d'écrire des données dans /tmp utilise la mémoire système. Pour en savoir plus, consultez la documentation TempDir et TempFile.

Serveur de métadonnées

Chaque instance de votre application peut demander des informations sur l'instance et votre projet à l'aide du serveur de métadonnées App Engine.

Vous pouvez accéder au serveur de métadonnées via les points de terminaison suivants :

  • http://metadata
  • http://metadata.google.internal

Les requêtes envoyées au serveur de métadonnées doivent inclure l'en-tête de requête Metadata-Flavor: Google. Cet en-tête indique que la requête a été envoyée dans le but de récupérer les valeurs de métadonnées.

La table suivante répertorie les points de terminaison sur lesquels vous pouvez effectuer des requêtes HTTP pour des métadonnées spécifiques :

Point de terminaison des métadonnées Description
/computeMetadata/v1/project/numeric-project-id Numéro de projet attribué à votre projet.
/computeMetadata/v1/project/project-id ID de projet attribué à votre projet.
/computeMetadata/v1/instance/region Région dans laquelle l'instance est en cours d'exécution.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email Adresse e-mail du compte de service par défaut attribué à votre projet.
/computeMetadata/v1/instance/service-accounts/default/ Répertorie tous les comptes de service par défaut pour votre projet.
/computeMetadata/v1/instance/service-accounts/default/scopes Répertorie tous les champs d'application disponibles pour les comptes de service par défaut.
/computeMetadata/v1/instance/service-accounts/default/token Renvoie le jeton d'authentification pouvant servir à authentifier votre application auprès d'autres API Google Cloud.

Par exemple, pour récupérer votre ID de projet, envoyez une requête à http://metadata.google.internal/computeMetadata/v1/project/project-id.