

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione e aggiornamento di gruppi di ambienti Elastic Beanstalk
<a name="environment-mgmt-compose"></a>

Con l' AWS Elastic Beanstalk [ComposeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html)API, puoi creare e aggiornare gruppi di ambienti Elastic Beanstalk all'interno di una singola applicazione. Ogni ambiente del gruppo può eseguire un componente separato di un'applicazione con architettura orientata ai servizi. L'API `Compose Environments` utilizza un elenco di versioni dell'applicazione e un nome di gruppo opzionale. Elastic Beanstalk crea un ambiente per ciascuna versione dell'applicazione oppure, se gli ambienti esistono già, vi distribuisce le versioni delle applicazioni.

Crea i collegamenti tra gli ambienti Elastic Beanstalk per designare un ambiente come dipendenza di un altro. Quando si crea un gruppo di ambienti con l'API `Compose Environments`, Elastic Beanstalk crea ambienti dipendenti solo dopo che le rispettive dipendenze sono attive e in esecuzione. Per ulteriori informazioni sui collegamenti degli ambienti, consulta [Creazione di collegamenti tra gli ambienti Elastic Beanstalk](environment-cfg-links.md).

L'API `Compose Environments` utilizza un [manifest di ambiente](environment-cfg-manifest.md) per archiviare i dettagli di configurazione che sono condivisi da gruppi di ambienti. Per ogni applicazione componente deve essere presente un file di configurazione `env.yaml` nel bundle di origine dell'applicazione che specifichi i parametri utilizzati per creare il rispettivo ambiente.

`Compose Environments` richiede che vengano specificati `EnvironmentName` e `SolutionStack` nel manifest dell'ambiente per ogni applicazione componente.

Puoi utilizzare l'`Compose Environments`API con l'interfaccia a riga di comando Elastic Beanstalk (EB CLI), o un SDK. AWS CLI Per istruzioni su CLI EB, vedi [Gestione di più ambienti elastici Elastic Beanstalk come gruppo con la CLI EB](ebcli-compose.md).

## Uso dell'API `Compose Environments`
<a name="environment-mgmt-compose-example"></a>

Ad esempio, puoi creare un'applicazione denominata `Media Library` che consenta agli utenti di caricare e gestire immagini e video archiviati in Amazon Simple Storage Service (Amazon S3). L'applicazione ha un ambiente di front-end, `front`, che esegue un'applicazione Web che consente agli utenti di caricare e scaricare singoli file, visualizzare la libreria e avviare processi di elaborazione in batch.

Invece di elaborare i processi direttamente, l'applicazione front-end aggiunge un processo a una coda Amazon SQS. Il secondo ambiente, `worker`, preleva le attività dalla coda e le elabora. `worker` utilizza un tipo di istanza G2 che dispone di una GPU ad alte prestazioni, mentre `front` può essere eseguito su un tipo di istanza generico più conveniente.

È possibile organizzare la cartella del progetto, `Media Library`, in directory separate per ogni componente, con ciascuna directory contenente un file di definizione dell'ambiente (`env.yaml`), ognuno con il proprio codice sorgente:

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

I seguenti elenchi mostrano il file `env.yaml` per ogni applicazione componente.

**`~/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
```

Dopo aver [creato una versione dell'applicazione](applications-versions.md) per i componenti applicazione front-end (`front-v1`) e lavoratore (`worker-v1`), chiama l'API `Compose Environments` con i nomi di versione. In questo esempio abbiamo utilizzato la AWS CLI per chiamare 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
```

La terza chiamata crea due ambienti, `front-dev` e `worker-dev`. L'API crea i nomi degli ambienti concatenando il nome `EnvironmentName` specificato nel file `env.yaml` con l'opzione `group name` specificata nella chiamata `Compose Environments`, separati da un trattino. La lunghezza totale di queste due opzioni e del trattino non deve superare la lunghezza massima consentita per i nomi di ambiente, ovvero 23 caratteri.

L'applicazione in esecuzione nell'ambiente `front-dev` può accedere al nome della coda Amazon SQS collegato all'ambiente `worker-dev` leggendo la variabile `WORKERQUEUE`. Per ulteriori informazioni sui collegamenti degli ambienti, consulta [Creazione di collegamenti tra gli ambienti Elastic Beanstalk](environment-cfg-links.md).