

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

# 在创建环境之前设置配置选项
<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 负载均衡器以向每个 EC2 实例的 `/health` 路径进行 HTTP 请求，从而确定它是否运行状况良好。

**注意**  
YAML 依赖一致的缩进。当替换示例配置文件中的内容时，应匹配缩进级别，并且确保您的文本编辑器使用空格而不是字符来进行缩进。

在您的[应用程序源包](applications-sourcebundle.md)中包含 `.ebextensions` 目录，并将它部署到新的或现有的 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. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Actions**（操作），然后选择 **Save configuration**（保存配置）。

1. 使用屏幕上的对话框完成该操作。

保存的配置存储在 Elastic Beanstalk S3 存储桶中按照应用程序命名的文件夹中。例如，对于账号 123456789012，us-west-2 区域中名为 `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. 使用 `describe-environments` 确定 Elastic Beanstalk 环境的环境 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 格式的配置选项。如果您使用来创建和管理环境，则使用 JSON 格式 AWS CLI 的配置文件库会很有用。

例如，以下 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 config** 命令支持保存的配置以及直接环境配置之外，EB CLI 还有一个配置文件，其中包含一个名为 `default_ec2_keyname` 的选项，可以用于指定 Amazon EC2 密钥对以便对环境中的实例进行 SSH 访问。EB CLI 使用此选项在 `EC2KeyName` 命名空间中设置 `aws:autoscaling:launchconfiguration` 配置选项。

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

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