

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

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

AWS Elastic Beanstalk 支援大量的[組態選項](command-options.md)，可讓您修改套用至環境中資源的設定。您可覆寫數個選項的預設值，以自訂您的環境。您亦可設定其他選項來啟用其他功能。

Elastic Beanstalk 支援已儲存組態選項設定的兩種方法。YAML 或 JSON 格式的組態檔案可納入名為 `.ebextensions` 之目錄的應用程式原始碼，並成為應用程式原始碼套件的一部分進行部署。您會於本機建立並管理組態檔案。

已儲存組態是您自執行環境或 JSON 選項檔案建立並存放於 Elastic Beanstalk 的範本。現有已儲存組態亦可進行擴展，以建立新的組態。

**注意**  
組態檔案和已儲存組態內定義的設定 (包括 Elastic Beanstalk 主控台和 [EB CLI](eb-cli3.md) 套用的建議值)，優先順序低於環境建立期間或之後所進行的設定。如需詳細資訊，請參閱「[優先順序](command-options.md#configuration-options-precedence)」。

您亦可以 JSON 文件來指定選項，並在透過 EB CLI 或 建立或更新環境時直接提供給 Elastic Beanstalk AWS CLI以這種方式直接提供給 Elastic Beanstalk 的選項，會覆寫其他方法提供的選項。

如需可用選項的完整清單，請參閱[組態選項](command-options.md)。

**Topics**
+ [組態檔案 (`.ebextensions`)](#configuration-options-before-ebextensions)
+ [已儲存的組態](#configuration-options-before-savedconfig)
+ [JSON 文件](#configuration-options-before-json)
+ [EB CLI 組態](#configuration-options-before-configyml)

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

使用 `.ebextensions` 來設定讓應用程式正常運作的選項，並提供可由更高層級[優先順序](command-options.md#configuration-options-precedence)覆寫之其他選項的預設值。`.ebextensions` 指定的選項優先順序最低，會被任何層級的設定覆寫。

欲使用組態檔案，請於專案原始碼的最上層建立名為 `.ebextensions` 的資料夾。新增副檔名為 `.config` 的檔案，並以下列方式指定選項：

```
option_settings:
  - namespace:  namespace
    option_name:  option name
    value:  option value
  - namespace:  namespace
    option_name:  option name
    value:  option value
```

例如，下列組態檔案會將應用程式的運作狀態檢查 url 設定為 `/health`：

`healthcheckurl.config`

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application
    option_name:  Application Healthcheck URL
    value:  /health
```

JSON 為：

```
{
 "option_settings" :
    [
      {
        "namespace" : "aws:elasticbeanstalk:application",
        "option_name" : "Application Healthcheck URL",
        "value" : "/health"
      }
    ]
}
```

這會將 Elastic Beanstalk 環境內的 Elastic Load Balancing 負載平衡器，設定為將 HTTP 請求發送至路徑 `/health` 給各個 EC2 執行個體，以判斷其是否正常運作。

**注意**  
YAML 憑藉一致的縮排。請在取代範例組態檔中的內容時，讓縮排層級一致，並確認您的文字編輯器使用空格而非定位字元進行縮排。

將 `.ebextensions` 目錄納入[應用程式原始碼套件](applications-sourcebundle.md)，並將其部署至新的或現有 Elastic Beanstalk 環境。

除了 `option_settings` 之外，組態檔案亦支援數個區段，可自訂執行於您環境伺服器上的軟體和檔案。如需更多詳細資訊，請參閱 [.Ebextensions](ebextensions.md)。

## 已儲存的組態
<a name="configuration-options-before-savedconfig"></a>

可使用 Elastic Beanstalk 主控台、EB CLI 或 來建立已儲存組態，藉此儲存在環境建立期間或之後套用至現有環境的設定 AWS CLI已儲存組態屬於應用程式，可套用至應用程式新的或現有的環境。

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

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

**建立已儲存組態 (Elastic Beanstalk 主控台)**

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

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

1. 選擇 **Actions** (動作)，然後選擇 **Save Configuration** (儲存組態)。

1. 使用畫面顯示對話方塊來完成動作。

已儲存組態會存放在 Elastic Beanstalk S3 儲存貯體內以您的應用程式命名之資料夾。例如，us-west-2 區域中對於 123456789012 帳戶一個名為 `my-app` 應用程式的組態位於 `s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app`。

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

[EB CLI](eb-cli3.md) 亦於 [**eb config**](eb3-config.md) 下提供子命令，可與已儲存組態互動：

**欲建立已儲存組態 (EB CLI)**

1. 儲存連接環境的目前組態：

   ```
   ~/project$ eb config save --cfg my-app-v1
   ```

   EB CLI 會將組態儲存至 `~/project/.elasticbeanstalk/saved_configs/my-app-v1.cfg.yml`。

1. 視需要於本機修改已儲存組態。

1. 將已儲存組態上傳至 S3：

   ```
   ~/project$ eb config put my-app-v1
   ```

### AWS CLI
<a name="configuration-options-before-savedconfig-awscli"></a>

從執行環境透過 `aws elasticbeanstalk create-configuration-template` 建立已儲存組態。

**建立已儲存組態 (AWS CLI)**

1. 透過 Elastic Beanstalk 辨識您 `describe-environments` 環境的環境 ID：

   ```
   $ aws elasticbeanstalk describe-environments --environment-name my-env
   {
       "Environments": [
           {
               "ApplicationName": "my-env",
               "EnvironmentName": "my-env",
               "VersionLabel": "89df",
               "Status": "Ready",
               "Description": "Environment created from the EB CLI using \"eb create\"",
               "EnvironmentId": "e-vcghmm2zwk",
               "EndpointURL": "awseb-e-v-AWSEBLoa-1JUM8159RA11M-43V6ZI1194.us-west-2.elb.amazonaws.com",
               "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.2 running Multi-container Docker 1.7.1 (Generic)",
               "CNAME": "my-env-nfptuqaper.elasticbeanstalk.com",
               "Health": "Green",
               "AbortableOperationInProgress": false,
               "Tier": {
                   "Version": " ",
                   "Type": "Standard",
                   "Name": "WebServer"
               },
               "HealthStatus": "Ok",
               "DateUpdated": "2015-10-01T00:24:04.045Z",
               "DateCreated": "2015-09-30T23:27:55.768Z"
           }
       ]
   }
   ```

1. 透過 `create-configuration-template` 儲存環境的目前組態：

   ```
   $ aws elasticbeanstalk create-configuration-template --environment-id e-vcghmm2zwk --application-name my-app --template-name v1
   ```

Elastic Beanstalk 會將組態儲存到 Amazon S3 中的 Elastic Beanstalk 儲存貯體中。

## JSON 文件
<a name="configuration-options-before-json"></a>

如果您使用 AWS CLI 建立和更新環境，也可以提供 JSON 格式的組態選項。如果您使用 AWS CLI 建立和管理環境，JSON 中的組態檔案庫很有用。

例如，下列 JSON 文件會將應用程式的運作狀態檢查 url 設定為 `/health`：

**\$1/ebconfigs/healthcheckurl.json**

```
[
  {
    "Namespace": "aws:elasticbeanstalk:application",
    "OptionName": "Application Healthcheck URL",
    "Value": "/health"
  }
]
```

## EB CLI 組態
<a name="configuration-options-before-configyml"></a>

EB CLI 除了透過 **eb config** 命令支援已儲存組態和直接的環境資訊，還有另一個組態檔案，其中名為 `default_ec2_keyname` 的選項可用來指定 Amazon EC2 金鑰對，以便對環境中執行個體進行 SSH 存取。EB CLI 在 `EC2KeyName` 命名空間使用此選項設定 `aws:autoscaling:launchconfiguration` 組態選項。

**\$1/workspace/my-app/.elasticbeanstalk/config.yml**

```
branch-defaults:
  master:
    environment: my-env
  develop:
    environment: my-env-dev
deploy:
  artifact: ROOT.war
global:
  application_name: my-app
  default_ec2_keyname: my-keypair
  default_platform: Tomcat 8 Java 8
  default_region: us-west-2
  profile: null
  sc: git
```