

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciar vários ambientes do Elastic Beanstalk como um grupo com a CLI do EB
<a name="ebcli-compose"></a>

Você pode usar o EB CLI para criar grupos de AWS Elastic Beanstalk ambientes, cada um executando um componente separado de um aplicativo de arquitetura orientada a serviços. O EB CLI gerencia esses grupos usando a [ComposeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html)API.

**nota**  
Grupos de ambientes não é a mesma coisa que vários contêineres em um ambiente do Docker de vários contêineres. Com grupos de ambientes, cada componente da aplicação é executada em um ambiente separado do Elastic Beanstalk com seu próprio conjunto dedicado de instâncias do Amazon EC2. Cada componente pode ser escalado separadamente. Com o Docker de vários contêineres, você combina vários componentes de um aplicativo em um único ambiente. Todos os componentes compartilham o mesmo conjunto de instâncias do Amazon EC2 com cada instância executando vários contêineres do Docker. Escolha uma dessas arquiteturas de acordo com as necessidades do seu aplicativo.  
Para obter detalhes sobre o Docker de vários contêineres, consulte [Usar a ramificação da plataforma Docker gerenciada pelo ECS no Elastic Beanstalk](create_deploy_docker_ecs.md).

Organize os componentes do aplicativo na seguinte estrutura de pastas:

```
~/project-name
|-- component-a
|   `-- env.yaml
`-- component-b
    `-- env.yaml
```

Cada subpasta contém o código-fonte de um componente independente de um aplicativo que será executado em seu próprio ambiente e um arquivo de definição do ambiente chamado `env.yaml`. Para ver detalhes sobre o formato do `env.yaml`, consulte [Manifesto de ambiente (`env.yaml`)](environment-cfg-manifest.md). 

Para usar a API `Compose Environments`, primeiro execute **eb init** da pasta do projeto, especificando cada componente pelo nome da pasta que o contém com a opção `--modules`:

```
~/workspace/project-name$ eb init --modules component-a component-b
```

A CLI do EB solicita a [configuração de cada componente](eb-cli3-configuration.md) e criação do diretório `.elasticbeanstalk` em cada componente da pasta. A EB CLI não cria arquivos de configuração no diretório pai.

```
~/project-name
|-- component-a
|   |-- .elasticbeanstalk
|   `-- env.yaml
`-- component-b
    |-- .elasticbeanstalk
    `-- env.yaml
```

Em seguida, execute o comando **eb create** com uma lista de ambientes para criar, um para cada componente:

```
~/workspace/project-name$ eb create --modules component-a component-b --env-group-suffix group-name
```

Esse comando cria um ambiente para cada componente. Os nomes dos ambientes são criados concatenando o `EnvironmentName` especificado no arquivo `env.yaml` com o nome do grupo, separados por um hífen. O tamanho total dessas duas opções e o hífen não deve exceder o máximo permitido de 23 caracteres do nome do ambiente.

Para atualizar o ambiente, use o comando **eb deploy**:

```
~/workspace/project-name$ eb deploy --modules component-a component-b
```

Você pode atualizar os componentes individualmente ou como um grupo. Especifique os componentes que deseja atualizar com a opção `--modules`.

A EB CLI armazena o nome do grupo que você usou com **eb create** na seção `branch-defaults` do arquivo de configuração da EB CLI, em `/.elasticbeanstalk/config.yml`. Para implantar o aplicativo em um grupo diferente, use a opção `--env-group-suffix` quando executar **eb deploy**. Se o grupo ainda não existe, a EB CLI cria um novo grupo de ambientes:

```
~/workspace/project-name$ eb deploy --modules component-a component-b --env-group-suffix group-2-name
```

Para encerrar ambientes, execute **eb terminate** na pasta de cada módulo. Por padrão, a EB CLI mostrará um erro se você tentar encerrar um ambiente do qual um outro ambiente em execução depende. Encerre o ambiente dependente primeiro ou use a opção `--ignore-links` para substituir o comportamento padrão:

```
~/workspace/project-name/component-b$ eb terminate --ignore-links
```