

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 利用 EB CLI，以群組方式管理多個 Elastic Beanstalk 環境
<a name="ebcli-compose"></a>

您可以使用 EB CLI 來建立 AWS Elastic Beanstalk 環境群組，每個環境都會執行服務導向架構應用程式的個別元件。EB CLI 使用 [ComposeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html) API 來管理這類群組。

**注意**  
環境群組不同於多容器 Docker 環境中的多個容器。使用環境群組，您的應用程式中的每個元件在個別的 Elastic Beanstalk 環境中執行，有自己專用的一組 Amazon EC2 執行個體。每個元件可分開擴展。有了多容器 Docker，您將一個應用程式中的多個元件結合為單一環境。所有元件共用相同的一組 Amazon EC2 執行個體，每個執行個體執行多個 Docker 容器。根據您的應用程式需求，選擇其中一個架構。  
如需關於多容器 Docker 的詳細資訊，請參閱[在 Elastic Beanstalk 中使用 ECS 受管 Docker 平台分支](create_deploy_docker_ecs.md)。

將您的應用程式元件依下列的資料夾結構來整理劃分：

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

每個子資料夾皆包含應用程式獨立元件的原始碼 (將會在自己的環境中執行)，以及名為 `env.yaml` 的環境定義檔案。關於 `env.yaml` 格式的詳細資訊，請參閱[環境資訊清單 (`env.yaml`)](environment-cfg-manifest.md)。

若要使用 `Compose Environments` API，請先從專案資料夾中執行 **eb init**，然後利用 `--modules` 選項，根據其所屬資料夾的名稱來指定各元件。

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

EB CLI 會提示您[設定各個元件](eb-cli3-configuration.md)，然後在每個元件資料夾中建立 `.elasticbeanstalk` 目錄。EB CLI 不會在父目錄中建立組態檔案。

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

接著，執行 **eb create** 指令，根據環境的清單，針對每個元件各建立一個環境。

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

此指令會針對每個元件建立環境。將 `EnvironmentName` 檔案中所指定的 `env.yaml`，與群組名稱串連在一起，中間以連字號分隔，來做為環境的名稱。這兩個選項加上連字號的總長度，不得超過環境名稱長度的 23 個字元上限。

若要更新環境，請使用 **eb deploy** 指令：

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

您可以個別更新每個元件，也可用群組方式來更新這些元件。使用 `--modules` 選項來指定想要更新的元件。

EB CLI 會將您搭配 **eb create** 使用的群組名稱，存放於 EB CLI 組態檔案 (`branch-defaults`) 的 `/.elasticbeanstalk/config.yml` 區段中。若要將應用程式部署到不同的群組，當您執行 `--env-group-suffix` 時請使用 **eb deploy** 選項。如果該群組不存在，EB CLI 會建立多個環境的新群組：

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

若要終止環境，請針對每個模組執行資料夾中的 **eb terminate**。根據預設，如果您嘗試終止另一個運作中環境所相依的環境，EB CLI 將會顯示錯誤。請先終止從屬的環境，或使用 `--ignore-links` 選項來取代預設的動作：

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