

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在环境创建后设置配置选项
<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>

您可以在 Elastic Beanstalk 控制台中更新配置选项设置，方法是部署包含配置文件的应用程序源包，应用保存的配置，或者在环境管理控制台中使用 **Configuration**（配置）页面直接修改环境。

**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. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

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. 选择一个环境，然后选择**加载**。

保存的配置中定义的设置会覆盖配置文件中的设置，但会被使用环境管理控制台配置的设置覆盖。

有关创建保存的配置的详细信息，请参阅[保存的配置](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. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration (配置)**。

1. 找到要编辑的配置页面：
   + 如果您看到感兴趣的选项，或者您知道它所在的配置类别，请在它的配置类别中选择 **Edit**（编辑）。
   + 要查找一个选项，请打开**表视图**，然后在搜索框中输入搜索词。在您键入时，列表将会变短，并且仅显示与搜索词匹配的选项。

     在看到要查找的选项时，请在包含该选项的配置类别中选择 **Edit**（编辑）。  
![\[Elastic Beanstalk 控制台的配置概述页面的表视图，其中显示了选项搜索\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/environments-cfg-console.overview.table.search1.png)

1. 更改设置，然后选择**保存**。

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 CLI 更新配置选项设置，方法是部署包含配置文件的源代码，应用来自保存的配置的设置，或使用 **eb config** 命令直接修改环境配置。

**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` 命名空间中应用的设置。这些设置包括：
+ EB CLI 在环境创建期间对 `IamInstanceProfile` 和 `InstanceType` 应用的两个建议值。
+ 在创建期间根据存储库配置直接对环境设置的选项 `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 CLI 通过部署包含配置文件的源包、应用远程存储的保存配置或使用`aws elasticbeanstalk update-environment`命令直接修改环境来更新配置选项设置。

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

Elastic Beanstalk 在您使用 `aws elasticbeanstalk create-configuration-template` 创建时将保存的配置放在此位置。您也可以在本地修改保存的配置并自行将它们放在此处。

### 使用命令行选项
<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 默认值时就会使用 API 默认值。有关详细信息，请参阅[优先顺序](command-options.md#configuration-options-precedence)。