

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

# 於環境建立後設定組態選項
<a name="environment-configuration-methods-after"></a>

您可以套用已儲存組態、上傳具備組態檔案 (`.ebextensions`) 或使用 JSON 文件的新原始碼套件，藉此於執行環境修改選項設定。EB CLI 和 Elastic Beanstalk 主控台亦具備用戶端特定的功能，可設定和更新組態選項。

設定或變更組態選項時，可能會依據變更幅度而觸發全面的環境更新。例如，於 [`aws:autoscaling:launchconfiguration`](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) (如 `InstanceType`) 內變更選項時，您環境內的 Amazon EC2 執行個體會重新佈建。這會觸發[滾動更新](using-features.rollingupdates.md)。套用其他組態變更則無須中斷或重新佈建。

您可以使用 EB CLI 或 AWS CLI 命令從環境移除選項設定。若移除環境 API 層級直接設定的選項，組態檔案的設定將可浮現並生效，否則會受到直接套用於環境的設定遮蓋。

已儲存的組態和組態檔案中的設定是可覆寫的，方法是透過直接在環境中使用其他組態之其中一個方法來設定相同的選項。不過，這些只能透過套用已更新的儲存組態或組態檔案完全移除。若選項未設定於已儲存組態、組態檔案，或直接設定於環境，將套用預設值 (若有)。如需詳細資訊，請參閱「[優先順序](command-options.md#configuration-options-precedence)」。

**Topics**
+ [Elastic Beanstalk 主控台](#configuration-options-after-console)
+ [EB CLI](#configuration-options-after-ebcli)
+ [的 AWS CLI](#configuration-options-after-awscli)

## Elastic Beanstalk 主控台
<a name="configuration-options-after-console"></a>

您可以部署內含組態檔案的應用程式原始碼套件、套用已儲存組態，或於環境管理主控台的 **Configuration (組態)** 頁面直接修改環境，藉此更新 Elastic Beanstalk 主控台的組態選項設定。

**Topics**
+ [使用組態檔案 (`.ebextensions`)](#configuration-options-after-console-ebextensions)
+ [使用已儲存組態](#configuration-options-after-console-savedconfig)
+ [使用 Elastic Beanstalk 主控台](#configuration-options-after-console-configpage)

### 使用組態檔案 (`.ebextensions`)
<a name="configuration-options-after-console-ebextensions"></a>

於您的來源目錄更新組態檔案、建立新的原始碼套件並將新的版本部署至您的 Elastic Beanstalk 環境，藉此套用變更。

如需組態檔案的詳細資訊，請參閱 [.Ebextensions](ebextensions.md)。

**若要部署原始碼套件**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在環境概觀頁面上，選擇 **Upload and deploy** (上傳和部署)。

1. 使用畫面顯示對話方塊來上傳原始碼套件。

1. 選擇 **Deploy** (部署)。

1. 部署完成後，您可選擇網站的 URL 以在新分頁中開啟您的網站。

變更組態檔案不會覆寫已儲存組態的選項設定，也不會覆寫直接套用至環境 API 層級的設定。詳細資訊請參閱[優先順序](command-options.md#configuration-options-precedence)。

### 使用已儲存組態
<a name="configuration-options-after-console-savedconfig"></a>

將已儲存組態套用至執行環境，藉此套用其定義的選項設定。

**將已儲存組態套用到執行的環境 (Elastic Beanstalk 主控台)**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Saved configurations (已儲存的配置)**。

1. 選取您要套用的儲存組態，然後選擇 **Load (載入)**。

1. 選取環境，然後選擇 **Load (載入)**。

已儲存組態定義的設定會覆寫組態檔案內的設定，且可使用環境管理主控台進行設定加以覆寫。

如需建立已儲存組態的詳細資訊，請參閱 [已儲存的組態](environment-configuration-methods-before.md#configuration-options-before-savedconfig)。

### 使用 Elastic Beanstalk 主控台
<a name="configuration-options-after-console-configpage"></a>

Elastic Beanstalk 主控台會在 **Configuration (組態)** 頁面為每個環境提供許多組態選項。

**變更執行環境的組態選項 (Elastic Beanstalk 主控台)**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration (組態)**。

1. 尋找您想要編輯的組態頁面：
   + 如果您看到自己感興趣的選項，或知道選項所在的組態類別，請選擇其組態類別中的 **Edit (編輯)**。
   + 若要尋找選項，請開啟 **Table View (資料表檢視)**，然後在搜尋方塊中搜尋詞彙。輸入時，清單會越變越短，且只會顯示符合搜尋詞彙的選項。

     當您看到正在尋找的選項時，請選擇包含其組態類別中的 **Edit (編輯)**。  
![Elastic Beanstalk 主控台組態概觀頁面的資料表檢視，顯示選項搜尋](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/environments-cfg-console.overview.table.search1.png)

1. 變更設定，然後選擇 **Save (儲存)**。

1. 視需要在其他組態類別重複之前兩個步驟。

1. 選擇 **Apply** (套用)。

對環境管理主控台中的組態選項所做的變更，會直接套用至環境。這些變更會複寫組態檔案或已儲存組態中相同選項的設定。詳細資訊請參閱[優先順序](command-options.md#configuration-options-precedence)。

如需有關使用 Elastic Beanstalk 主控台在執行中環境變更組態選項的詳細資訊，請參閱[設定 Elastic Beanstalk 環境](customize-containers.md)下的主題。

## EB CLI
<a name="configuration-options-after-ebcli"></a>

您可以部署內含組態檔案的原始碼、套用已儲存組態的設定，或直接使用 **eb config** 命令修改環境資訊，藉此透過 EB CLI 更新組態選項設定。

**Topics**
+ [使用組態檔案 (`.ebextensions`)](#configuration-options-after-ebcli-ebextensions)
+ [使用已儲存組態](#configuration-options-after-ebcli-savedconfig)
+ [使用 **eb config**](#configuration-options-after-ebcli-ebconfig)
+ [使用 **eb setenv**](#configuration-options-after-ebcli-ebsetenv)

### 使用組態檔案 (`.ebextensions`)
<a name="configuration-options-after-ebcli-ebextensions"></a>

於您專案資料夾的 `.config` 底下納入 `.ebextensions`，與應用程式程式碼一同部署。

如需組態檔案的詳細資訊，請參閱 [.Ebextensions](ebextensions.md)。

```
~/workspace/my-app/
|-- .ebextensions
|   |-- environmentvariables.config
|   `-- healthcheckurl.config
|-- .elasticbeanstalk
|   `-- config.yml
|-- index.php
`-- styles.css
```

透過 **eb deploy** 部署您的原始碼。

```
~/workspace/my-app$ eb deploy
```

### 使用已儲存組態
<a name="configuration-options-after-ebcli-savedconfig"></a>

您可以使用 **eb config** 命令，將已儲存組態套用至執行環境。使用 `--cfg` 選項搭配已儲存組態的名稱，將其設定套用至您的環境。

```
$ eb config --cfg {{v1}}
```

在此範例中，`v1` 為[之前建立和儲存的組態檔案](environment-configuration-methods-before.md#configuration-options-before-savedconfig)名稱。

使用此命令套用至環境的設定，會覆寫環境建立期間套用的設定，以及應用程式原始碼套件內組態檔案所定義的設定。

### 使用 **eb config**
<a name="configuration-options-after-ebcli-ebconfig"></a>

EB CLI 的 **eb config** 命令可讓您使用文字編輯器，直接設定並移除環境的選項設定。

當您執行 **eb config** 時，EB CLI 會顯示套用至您環境的設定，其所有來源包括組態檔案、已儲存組態、建議值、直接設定於環境的選項和 API 預設值。

**注意**  
**eb config** 不會顯示環境的屬性。若要設定可以從您的應用程式中讀取的環境屬性，請使用。[**eb setenv**](#configuration-options-after-ebcli-ebsetenv)

以下範例顯示 `aws:autoscaling:launchconfiguration` 命名空間中套用的設定。這些設定包括：
+ 針對 `IamInstanceProfile` 及 `InstanceType` 在環境建立期間由 EB CLI 套用的兩個建議值。
+ 根據儲存庫組態建立的期間，直接在環境設定的選項 `EC2KeyName`。
+ 其他選項適用的 API 預設值。

```
ApplicationName: tomcat
DateUpdated: 2015-09-30 22:51:07+00:00
EnvironmentName: tomcat
SolutionStackName: 64bit Amazon Linux 2015.03 v2.0.1 running Tomcat 8 Java 8
settings:
...
aws:autoscaling:launchconfiguration:
    BlockDeviceMappings: null
    EC2KeyName: my-key
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
    ImageId: ami-1f316660
    InstanceType: t2.micro
...
```

**透過 **eb config** 設定或變更組態選項**

1. 執行 **eb config** 以檢視您的環境資訊。

   ```
   ~/workspace/my-app/$ eb config
   ```

1. 使用預設文字編輯器變更任何設定值。

   ```
   aws:autoscaling:launchconfiguration:
       BlockDeviceMappings: null
       EC2KeyName: my-key
       IamInstanceProfile: aws-elasticbeanstalk-ec2-role
       ImageId: ami-1f316660
       InstanceType: {{t2.medium}}
   ```

1. 儲存暫時組態檔案並離開。

1. EB CLI 將更新您的環境資訊。

透過 **eb config** 設定的組態選項將覆寫所有其他來源的設定。

您亦可透過 **eb config**，將選項自您的環境移除。<a name="configuration-options-remove-ebcli"></a>

**移除組態選項 (EB CLI)**

1. 執行 **eb config** 以檢視您的環境資訊。

   ```
   ~/workspace/my-app/$ eb config
   ```

1. 取代顯示字串 `null` 的任何值。您亦可將包含欲移除選項的整行程式碼刪除。

   ```
   aws:autoscaling:launchconfiguration:
       BlockDeviceMappings: null
       EC2KeyName: my-key
       IamInstanceProfile: aws-elasticbeanstalk-ec2-role
       ImageId: ami-1f316660
       InstanceType: null
   ```

1. 儲存暫時組態檔案並離開。

1. EB CLI 將更新您的環境資訊。

透過 **eb config** 將選項自您的環境移除，將使得相同選項的設定自您應用程式原始碼套件的組態檔案浮現。詳細資訊請參閱[優先順序](command-options.md#configuration-options-precedence)。

### 使用 **eb setenv**
<a name="configuration-options-after-ebcli-ebsetenv"></a>

若要透過 EB CLI 設定環境屬性，請使用 **eb setenv**。

```
~/workspace/my-app/$ eb setenv {{ENVVAR}}={{TEST}}
INFO: Environment update is starting.
INFO: Updating environment my-env's configuration settings.
INFO: Environment health has transitioned from Ok to Info. Command is executing on all instances.
INFO: Successfully deployed new configuration to environment.
```

此命令將環境屬性設定於 [`aws:elasticbeanstalk:application:environment` 命名空間](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)。經過短暫的更新程序後，您的應用程式即可取得透過 **eb setenv** 設定的環境屬性。

檢視透過 **eb printenv** 設定於您環境的環境屬性。

```
~/workspace/my-app/$ eb printenv
 Environment Variables:
     ENVVAR = TEST
```

## 的 AWS CLI
<a name="configuration-options-after-awscli"></a>

您可以透過部署包含組態檔案的原始碼套件、套用遠端儲存的已儲存組態，或使用 `aws elasticbeanstalk update-environment`命令直接修改環境， AWS CLI 來使用 更新組態選項設定。

**Topics**
+ [使用組態檔案 (`.ebextensions`)](#configuration-options-after-awscli-ebextensions)
+ [使用已儲存組態](#configuration-options-after-awscli-savedconfig)
+ [使用命令列選項](#configuration-options-after-awscli-commandline)

### 使用組態檔案 (`.ebextensions`)
<a name="configuration-options-after-awscli-ebextensions"></a>

若要使用 將組態檔案套用至執行環境 AWS CLI，請在您上傳至 Amazon S3 的應用程式原始碼套件中包含這些檔案。

如需組態檔案的詳細資訊，請參閱 [.Ebextensions](ebextensions.md)。

```
~/workspace/my-app-v1.zip
|-- .ebextensions
|   |-- environmentvariables.config
|   `-- healthcheckurl.config
|-- index.php
`-- styles.css
```

**上傳應用程式原始碼套件並套用至執行環境 (AWS CLI)**

1. 若您的 Amazon S3 內還沒有 Elastic Beanstalk 儲存貯體，請使用 `create-storage-location` 建立：

   ```
   $ aws elasticbeanstalk create-storage-location
   {
       "S3Bucket": "elasticbeanstalk-us-west-2-123456789012"
   }
   ```

1. 將您的應用程式原始碼套件上傳至 Amazon S3。

   ```
   $ aws s3 cp {{sourcebundlev2.zip}} s3://elasticbeanstalk-{{us-west-2-123456789012}}/my-app/sourcebundlev2.zip
   ```

1. 建立應用程式版本。

   ```
   $ aws elasticbeanstalk create-application-version --application-name {{my-app}} --version-label v2 --description MyAppv2 --source-bundle S3Bucket="elasticbeanstalk-{{us-west-2-123456789012}}",S3Key="{{my-app/sourcebundlev2.zip}}"
   ```

1. 更新環境。

   ```
   $ aws elasticbeanstalk update-environment --environment-name {{my-env}} --version-label v2
   ```

### 使用已儲存組態
<a name="configuration-options-after-awscli-savedconfig"></a>

您可以透過 `--template-name` 命令的 `aws elasticbeanstalk update-environment` 選項，將已儲存組態套用至執行環境。

已儲存組態務必位於您的 Elastic Beanstalk 儲存貯體內 `resources/templates` 底下以您應用程式命名的路徑。例如，帳戶 123456789012 美國西部 (奧勒岡) 區域 (us-west-2) 中的 `v1` 應用程式的 `my-app` 範本位於 `s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app/v1`

**將已儲存組態套用至執行中環境 (AWS CLI)**
+ 透過 `update-environment` 選項於 `--template-name` 呼叫中指定已儲存組態。

  ```
  $ aws elasticbeanstalk update-environment --environment-name {{my-env}} --template-name {{v1}}
  ```

當您使用 `aws elasticbeanstalk create-configuration-template` 建立已儲存組態，Elastic Beanstalk 將這些組態存放至此位置。您亦可將已儲存組態的存放位置修改為本機，並將這些組態自行存放於此。

### 使用命令列選項
<a name="configuration-options-after-awscli-commandline"></a>

**透過 JSON 文件變更組態選項 (AWS CLI)**

1. 於本機檔案以 JSON 格式定義您的選項設定。

1. 使用 `update-environment` 選項執行 `--option-settings`。

   ```
   $ aws elasticbeanstalk update-environment --environment-name {{my-env}} --option-settings file://{{~/ebconfigs/as-zero.json}}
   ```

在此範例中，`as-zero.json` 定義的選項將環境執行個體數量的上下限均設定為零。如此將停止環境中執行個體的運作，無須終止環境。

**`~/ebconfigs/as-zero.json`**

```
[
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MinSize",
        "Value": "0"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MaxSize",
        "Value": "0"
    },
    {
        "Namespace": "aws:autoscaling:updatepolicy:rollingupdate",
        "OptionName": "RollingUpdateEnabled",
        "Value": "false"
    }
]
```

**注意**  
透過 `update-environment` 設定的組態選項將覆寫所有其他來源的設定。

您亦可透過 `update-environment`，將選項自您的環境移除。<a name="configuration-options-remove-awscli"></a>

**移除組態選項 (AWS CLI)**
+ 使用 `update-environment` 選項執行 `--options-to-remove` 命令。

  ```
  $ aws elasticbeanstalk update-environment --environment-name {{my-env}} --options-to-remove Namespace={{aws:autoscaling:launchconfiguration}},OptionName={{InstanceType}}
  ```

透過 `update-environment` 將選項自您的環境移除，將使得相同選項的設定自您應用程式原始碼套件的組態檔案浮現。若未將選項設定為使用這些方法，將套用 API 預設值 (若有)。詳細資訊請參閱[優先順序](command-options.md#configuration-options-precedence)。