Propriétés de l'environnement et autres paramètres de logiciel - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Propriétés de l'environnement et autres paramètres de logiciel

La page de configuration Configurer les mises à jour, la surveillance et la journalisation vous permet de configurer le logiciel sur les instances Amazon Elastic Compute Cloud (Amazon EC2) qui exécutent votre application. Vous pouvez configurer les propriétés de l'environnement, le débogage AWS X-Ray, le stockage et le streaming des journaux d'instance et les paramètres spécifiques à la plateforme.

Configurer les paramètres spécifiques à la plateforme

Outre l'ensemble d'options standard disponibles pour tous les environnements, la plupart des plateformes Elastic Beanstalk vous permettent de spécifier des paramètres propres à une langue ou à l'infrastructure. Ils apparaissent dans la section Logiciel de plateforme de la page Configurer les mises à jour, la surveillance et la journalisation et peuvent prendre les formes suivantes.

  • Propriétés de l'environnement prédéfinies – La plateforme Ruby utilise des propriétés d'environnement pour les paramètres d'infrastructure comme RACK_ENV et BUNDLE_WITHOUT.

  • Propriétés de l'environnement d'espace réservé – La plateforme Tomcat définit une propriété d'environnement nommée JDBC_CONNECTION_STRING qui n'a aucune valeur définie. Ce type de paramètre était plus fréquent sur les anciennes versions de la plateforme.

  • Options de configuration – La plupart des plateformes définissent des options de configuration dans des espaces de noms propres à la plateforme ou partagés tels que aws:elasticbeanstalk:xray ou aws:elasticbeanstalk:container:python.

Pour configurer les paramètres spécifiques à la plateforme dans la console Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk et, dans la liste Regions (Régions), sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Mises à jour, surveillance et journalisation, sélectionnez Modifier.

  5. Sous Logiciel de la plateforme, apportez les modifications nécessaires aux paramètres des options.

  6. Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.

Pour plus d'informations sur les options propres aux plateformes, et sur l'obtention des valeurs de propriété d'environnement dans votre code, reportez-vous à la rubrique relative à la plateforme pour votre langue ou votre infrastructure :

Configuration des propriétés de l'environnement (variables d'environnement)

Vous pouvez utiliser des propriétés d'environnement (également appelées variables d'environnement) pour transmettre des secrets, des points de terminaison, des paramètres de débogage et d'autres informations à votre application. Les propriétés d'environnement vous aident à exécuter votre application dans plusieurs environnements et pour différents objectifs tels que le développement, le test, la phase intermédiaire et la production.

En outre, lorsque vous ajoutez une base de données à votre environnement, Elastic Beanstalk définit les propriétés d'environnement, comme RDS_HOSTNAME, que vous pouvez lire dans le code de votre application pour construire un objet ou une chaîne de connexion.

Variables d'environnement

Dans la plupart des cas, les propriétés d'environnement sont transmises à votre application sous forme de variables d'environnement, mais le comportement dépend de la plateforme. Par exemple, la plateforme Java SE définit des variables d'environnement que vous récupérez avec System.getenv, tandis que la plateforme Tomcat définit des propriétés système Java que vous récupérez avec System.getProperty. En général, les propriétés ne sont pas visibles si vous vous connectez à une instance et exécutez env.

Pour configurer les propriétés d'environnement dans la console Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk et, dans la liste Regions (Régions), sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Mises à jour, surveillance et journalisation, sélectionnez Modifier.

  5. Faites défiler la page jusqu'à Propriétés de l'environnement.

  6. Sélectionnez Ajouter une propriété d'environnement.

  7. Saisissez les paires Nom et Valeur de la propriété.

  8. Si vous devez ajouter d'autres variables, répétez l'étape 6 et l'étape 7.

  9. Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.

Limites des propriétés de l'environnement
  • Les clés peuvent contenir des caractères alphanumériques et les symboles suivants : _ . : / + \ - @

    Les symboles répertoriés sont valides pour les clés de propriété d'environnement, mais peuvent ne pas être valides pour les noms de variable d'environnement sur la plateforme de votre environnement. Pour assurer une compatibilité avec toutes les plateformes, limitez les propriétés d'environnement au schéma suivant : [A-Z_][A-Z0-9_]*

  • Les valeurs peuvent contenir des caractères alphanumériques, des espaces et les symboles suivants : _ . : / = + \ - @ ' "

    Note

    Certains caractères dans les valeurs de propriété d'environnement doivent être échappés. Utilisez le caractère barre oblique inverse (\) pour représenter certains caractères spéciaux et de contrôle. La liste suivante inclut des exemples de représentation de certains caractères devant être échappés :

    • barre oblique inverse (\) – pour représenter l'utilisation \\

    • guillemet simple (') – pour représenter l'utilisation \'

    • guillemet double (") – pour représenter l'utilisation \"

  • Les clés et les valeurs sont sensibles à la casse.

  • La taille combinée de toutes les propriétés d'environnement ne peut pas dépasser 4 096 octets lorsqu'elles sont stockées en tant que chaînes au format clé=valeur.

Espaces de noms des paramètres de logiciel

Vous pouvez utiliser un fichier de configuration pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être définies par le service Elastic Beanstalk ou la plateforme que vous utilisez et sont organisées en espaces de noms.

Vous pouvez utiliser des fichiers de configuration Elastic Beanstalk pour définir les propriétés de l'environnement et les options de configuration dans votre code source. Utilisez l'espace de noms aws:elasticbeanstalk:application:environment pour définir les propriétés de l'environnement.

Exemple .ebextensions/options.config
option_settings: aws:elasticbeanstalk:application:environment: API_ENDPOINT: www.example.com/api

Si vous utilisez des fichiers de configuration ou des modèles AWS CloudFormation pour créer des ressources personnalisées, vous pouvez utiliser une fonction AWS CloudFormation pour obtenir des informations sur la ressource et l'attribuer de manière dynamique à une propriété d'environnement pendant le déploiement. L'exemple suivant du référentiel elastic-beanstalk-samples GitHub utilise la fonction Ref pour obtenir l'ARN d'une rubrique Amazon SNS qu'il crée et l'affecte à une propriété d'environnement nommée NOTIFICATION_TOPIC.

Remarques
  • Si vous utilisez une fonction AWS CloudFormation pour définir une propriété d'environnement, la console Elastic Beanstalk affiche la valeur de la propriété avant l'évaluation de la fonction. Vous pouvez utiliser le script de plateforme get-config pour confirmer les valeurs des propriétés d'environnement disponibles pour votre application.

  • La plateforme Docker multiconteneurs n'utilise pas AWS CloudFormation pour créer des ressources de conteneur. Par conséquent, cette plateforme ne prend pas en charge la définition des propriétés d'environnement à l'aide de fonctions AWS CloudFormation.

Exemple .Ebextensions/sns-topic.config
Resources: NotificationTopic: Type: AWS::SNS::Topic option_settings: aws:elasticbeanstalk:application:environment: NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'

Vous pouvez également utiliser cette fonctionnalité pour propager les informations à partir des pseudo-paramètres AWS CloudFormation. Cet exemple obtient la région actuelle et l'affecte à une propriété nommée AWS_REGION.

Exemple .Ebextensions/env-regionname.config
option_settings: aws:elasticbeanstalk:application:environment: AWS_REGION: '`{"Ref" : "AWS::Region"}`'

La plupart des plateformes Elastic Beanstalk définissent des espaces de noms supplémentaires avec des options pour configurer le logiciel qui s'exécute sur l'instance, tel que le proxy inversé qui relaie des requêtes pour votre application. Pour plus d'informations sur les espaces de noms disponibles pour votre plateforme, consultez les ressources suivantes :

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d'AWS CLI. Pour plus d'informations, consultez Options de configuration.

Accès aux propriétés de l'environnement

Dans la plupart des cas, vous accédez aux propriétés de l'environnement dans le code de votre application sous forme d'une variable d'environnement. Toutefois, les propriétés d'environnement sont généralement transmises uniquement à l'application et ne peuvent pas être affichées via une connexion à une instance dans votre environnement et l'exécution de env.

  • Goos.Getenv

    endpoint := os.Getenv("API_ENDPOINT")
  • Java SESystem.getenv

    String endpoint = System.getenv("API_ENDPOINT");
  • Tomcat : System.getProperty

    String endpoint = System.getProperty("API_ENDPOINT");
  • .NET Core sous LinuxEnvironment.GetEnvironmentVariable

    string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
  • .NETappConfig

    NameValueCollection appConfig = ConfigurationManager.AppSettings; string endpoint = appConfig["API_ENDPOINT"];
  • Node.js : process.env

    var endpoint = process.env.API_ENDPOINT
  • PHP$_SERVER

    $endpoint = $_SERVER['API_ENDPOINT'];
  • Python : os.environ

    import os endpoint = os.environ['API_ENDPOINT']
  • RubyENV

    endpoint = ENV['API_ENDPOINT']

En dehors du code de l'application, par exemple dans un script exécuté pendant le déploiement, vous pouvez accéder aux propriétés de l'environnement avec le script de plateforme get-config. Consultez le référentiel GitHub elastic-beanstalk-samples pour obtenir des exemples de configuration utilisant get-config.