L'environnement d'exécution Ruby vous permet d'exécuter votre application dans App Engine dans un environnement de bac à sable. Ce document décrit en détail l'environnement d'exécution Ruby, y compris les en-têtes fournis à votre code et d'autres informations permettant de déployer correctement votre application sur App Engine.
Spécifiez l'environnement d'exécution Ruby pour App Engine dans l'environnement standard du fichier app.yaml
:
runtime: rubyVERSION
Où VERSION correspond aux numéros de version Ruby MAJOR
et MINOR
. Par exemple, pour utiliser la dernière version de Ruby, Ruby 3.3, spécifiez 33
.
Pour connaître les autres versions de Ruby compatibles, ainsi que la version d'Ubuntu correspondante pour votre version de Ruby, consultez la section Calendrier de compatibilité des environnements d'exécution.
Version Ruby
L'environnement d'exécution Java utilise la dernière version stable de la version spécifiée dans le fichier app.yaml
. App Engine se met automatiquement à jour en cas de nouvelle version corrective, mais pas en cas de nouvelle version mineure.
Par exemple, votre application peut être déployée sous Ruby 2.6.0 et faire ultérieurement l'objet d'une mise à jour automatique vers la version 2.6.1, mais elle ne sera pas automatiquement mise à jour vers Ruby 2.7.
Dépendances
Pour en savoir plus sur la déclaration et la gestion des dépendances, consultez la page Spécifier des dépendances.
Démarrage de l'application
L'environnement d'exécution démarre l'application à l'aide de l'élément entrypoint
défini dans app.yaml
. Le point d'entrée doit démarrer un processus qui répond aux requêtes HTTP sur le port défini par la variable d'environnement PORT
.
Exemple :
entrypoint: bundle exec rails server -p $PORT
La plupart des applications Web utilisent un serveur Web compatible avec Rack, tel que Puma, Unicorn ou Thin.
Vous devez ajouter le serveur en tant que dépendance dans le fichier de configuration Gemfile
de votre application. L'environnement d'exécution installe toutes les dépendances avant que votre point d'entrée ne soit appelé.
source "https://rubygems.org"
gem "rack"
gem "puma"
Exemple de point d'entrée utilisant puma pour une application Rails :
entrypoint: bundle exec rails server Puma -p $PORT
Exemple de point d'entrée utilisant puma pour une application Rack :
entrypoint: bundle exec rackup -s Puma -p $PORT
Pour les applications capables de traiter des requêtes sans serveur Rack, vous pouvez simplement exécuter un script Ruby :
entrypoint: bundle exec ruby app.rb
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
.