

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.

# Création et mise à jour de groupes d'environnements Elastic Beanstalk
<a name="environment-mgmt-compose"></a>

Avec l' AWS Elastic Beanstalk [ComposeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html)API, vous pouvez créer et mettre à jour des groupes d'environnements Elastic Beanstalk au sein d'une seule application. Chaque environnement du groupe peut exécuter un composant distinct d'une application d'architecture orientée services. L'API `Compose Environments` utilise une liste des versions d'application et un nom de groupe facultatif. Le service Elastic Beanstalk crée un environnement pour chaque version d'application. Si les environnements existent déjà, il y déploie les versions d'application.

Créez des liens entre les environnements Elastic Beanstalk afin de définir une dépendance entre deux environnements. Lorsque vous créez un groupe d'environnements avec l'API `Compose Environments`, Elastic Beanstalk crée des environnements dépendants, mais uniquement une fois que leurs dépendances sont opérationnelles. Pour de plus amples informations sur les liens d'environnement, veuillez consulter [Création de liens entre les environnements Elastic Beanstalk](environment-cfg-links.md).

L'API `Compose Environments` utilise un [manifeste d'environnement](environment-cfg-manifest.md) pour stocker les détails de configuration qui sont partagés par les groupes d'environnements. Chaque composant doit inclure un fichier de configuration `env.yaml` dans le bundle source de son application, qui spécifie les paramètres utilisés pour créer son environnement.

Pour utiliser `Compose Environments`, vous devez spécifier les paramètres `EnvironmentName` et `SolutionStack` dans le manifeste d'environnement pour chaque composant d'application.

Vous pouvez utiliser l'`Compose Environments`API avec l'interface de ligne de commande Elastic Beanstalk (EB CLI) AWS CLI, le ou un SDK. Pour obtenir les instructions sur l'interface de ligne de commande Elastic Beanstalk (EB CLI), veuillez consulter [Gestion de plusieurs environnements Elastic Beanstalk en tant que groupe avec l'interface de ligne de commande EB](ebcli-compose.md).

## Utilisation de l'API `Compose Environments`
<a name="environment-mgmt-compose-example"></a>

Par exemple, vous pouvez créer une application nommée `Media Library` qui permet aux utilisateurs de charger et gérer des images et des vidéos stockées dans Amazon Simple Storage Service (Amazon S3). L'application dispose d'un environnement frontal, `front`, qui exécute une application web permettant aux utilisateurs de charger et de télécharger des fichiers individuels, de visualiser leur bibliothèque et d'initier des tâches de traitement par lots.

Au lieu de traiter les tâches directement, l'application frontale les ajoute à une file d'attente Amazon SQS. Le deuxième environnement, `worker`, extrait les tâches de la file d'attente et les traite. `worker` utilise un type d'instance G2 doté d'un GPU très performant, tandis que `front` peut s'exécuter sur un type d'instance générique plus économique.

Vous pouvez organiser le dossier du projet, `Media Library`, dans des répertoires distincts pour chaque composant. Chaque répertoire contient un fichier de définition d'environnement (`env.yaml`) avec le code source pour chacun d'eux :

```
~/workspace/media-library
|-- front
|   `-- env.yaml
`-- worker
    `-- env.yaml
```

Les listes suivantes spécifient le fichier `env.yaml` pour chaque composant de l'application.

**`~/workspace/media-library/front/env.yaml`**

```
EnvironmentName: front+
EnvironmentLinks:
  "WORKERQUEUE" : "worker+"
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier: 
  Name: WebServer
  Type: Standard
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
  aws:autoscaling:launchconfiguration:
    InstanceType: m4.large
```

**`~/workspace/media-library/worker/env.yaml`**

```
EnvironmentName: worker+
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
  Name: Worker
  Type: SQS/HTTP
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
  aws:autoscaling:launchconfiguration:
    InstanceType: g2.2xlarge
```

Une fois que vous avez [créé une version d'application](applications-versions.md) pour les deux composants de l'application (frontal (`front-v1`) et travail (`worker-v1`)), vous devez appeler l'API `Compose Environments` avec les noms de version. Dans cet exemple, nous utilisons la AWS CLI pour appeler l'API.

```
# Create application versions for each component: 
~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label front-v1 --process --source-bundle S3Bucket="amzn-s3-demo-bucket",S3Key="front-v1.zip"
  {
    "ApplicationVersion": {
        "ApplicationName": "media-library",
        "VersionLabel": "front-v1",
        "Description": "",
        "DateCreated": "2015-11-03T23:01:25.412Z",
        "DateUpdated": "2015-11-03T23:01:25.412Z",
        "SourceBundle": {
            "S3Bucket": "amzn-s3-demo-bucket",
            "S3Key": "front-v1.zip"
        }
    }
  }
~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="amzn-s3-demo-bucket",S3Key="worker-v1.zip"
  {
    "ApplicationVersion": {
        "ApplicationName": "media-library",
        "VersionLabel": "worker-v1",
        "Description": "",
        "DateCreated": "2015-11-03T23:01:48.151Z",
        "DateUpdated": "2015-11-03T23:01:48.151Z",
        "SourceBundle": {
            "S3Bucket": "amzn-s3-demo-bucket",
            "S3Key": "worker-v1.zip"
        }
    }
  }
# Create environments:
~$ aws elasticbeanstalk compose-environments --application-name media-library --group-name dev --version-labels front-v1 worker-v1
```

Le troisième appel crée deux environnements : `front-dev` et `worker-dev`. L'API crée les noms des environnements en concaténant la valeur `EnvironmentName` spécifiée dans le fichier `env.yaml` avec l'option `group name` spécifiée dans l'appel `Compose Environments`, séparées par un tiret. La longueur totale de ces deux options et du trait d'union ne doit pas dépasser la longueur maximale autorisée pour le nom d'un environnement, soit 23 caractères.

L'application en cours d'exécution dans l'environnement `front-dev` peut accéder au nom de la file d'attente Amazon SQS; associée à l'environnement `worker-dev` en lisant la variable `WORKERQUEUE`. Pour de plus amples informations sur les liens d'environnement, veuillez consulter [Création de liens entre les environnements Elastic Beanstalk](environment-cfg-links.md).