

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

# Elastic Beanstalk 环境的竞价型实例支持
竞价型实例支持

本主题介绍可用于管理您 Elastic Beanstalk 环境中竞价型实例的容量和负载均衡的配置选项。其还提供了可用于配置这些选项的方法的详细信息和示例。您可以使用 [Elastic Beanstalk 控制台](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console)、[命名空间配置选项](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)、[Amazon CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 或 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli) 来管理配置选项。

**通过容量重新平衡最大限度地减少竞价型实例中断**  
为了帮助最大限度地减少竞价型实例中断对应用程序的影响，您可以启用 Amazon EC2 Auto Scaling 附带的“容量重新平衡”选项。

**重要**  
对 Spot 实例的需求在不同时间可能有显著的差异，Spot 实例的可用性也会因为未使用 Amazon EC2 实例的可用数量而差别巨大。Spot 实例可能会中断。

启用容量重新平衡后，EC2 会在中断前自动尝试替换自动扩缩组中的竞价型实例。要启用此功能，请使用 Elastic Beanstalk 控制台以[配置 Auto Scaling 组](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console)。或者，您可以在 [aws:autoscaling:asg](command-options-general.md#command-options-general-autoscalingasg) 命名空间中将 Elastic Beanstalk `EnableCapacityRebalancing` [配置选项](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)设置为 `true`。

有关更多信息，请参阅《*Amazon EC2 Auto Scaling 用户指南*》中的 [Capacity Rebalancing](https://docs.amazonaws.cn/autoscaling/ec2/userguide/capacity-rebalance.html) 和《*Amazon EC2 用户指南*》中的[竞价型实例中断](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/spot-interruptions.html)。

**较旧的实例类型和竞价型实例支持**  
一些较旧的 Amazon 账户可能会为 Elastic Beanstalk 提供不支持竞价型实例的默认实例类型。如果启用竞价型实例请求，并且系统显示您指定的所有实例类型均不支持竞价型实例错误，请以支持竞价型实例的实例类型更新配置。要选择 Spot 实例类型，请使用 [Spot Instance Advisor](https://www.amazonaws.cn/ec2/spot/instance-advisor/)。

**Topics**
+ [

# 为环境启用竞价型实例
](environments-cfg-autoscaling-enable-spot.md)
+ [

# 竞价型实例的分配策略
](environments-cfg-autoscaling-spot-allocation-strategy.md)
+ [

# 管理按需型实例和竞价型实例
](environments-cfg-autoscaling-spot-and-demand.md)
+ [

# Elastic Beanstalk 环境的容量配置
](environments-cfg-autoscaling-configuration-approaches.md)

# 为环境启用竞价型实例
启用竞价型实例

若要利用 Amazon EC2 竞价型实例，您可以为环境设置 `EnableSpot` 选项。然后，您环境的 Auto Scaling 组会将 Amazon EC2 购买选项组合在一起，并将按需实例和 Spot 实例组合在一起。

您可以使用 [Elastic Beanstalk 控制台](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console)、[命名空间配置选项](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)、[Amazon CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 或 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli) 为环境启用竞价型实例请求。

在为环境启用竞价型实例之前，请熟悉可用的 Auto Scaling 功能、容量和负载均衡配置选项。应用程序与工作负载、实例中断的影响和定价相关的要求都是您计划启用竞价型实例时的重要考虑因素。

以下主题详细介绍了 Auto Scaling 和容量管理选项，以及将它们二者结合起来使用对您的环境有何影响。我们提供了一些程序和示例配置，来向您说明各种选项并指导您配置这些选项。我们还提供了工具和特性，来帮助您管理配置和响应事件。您可以根据可预测的流量周期安排对配置的自动更改，配置触发器对流量等因素做出响应，以及配置 Auto Scaling 监控和运行状况检查。

有关竞价型实例的更多详细信息，包括关键概念和最佳实践说明，请参阅《Amazon EC2 用户指南》**中的[竞价型实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-spot-instances.html)。

**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

# 竞价型实例的分配策略
竞价型分配策略

您可以为您的 Elastic Beanstalk 环境选择本主题中列出的任意一种分配策略。使用[Elastic Beanstalk 控制台](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console)、[命名空间配置选项](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)或 [Amazon CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 为您的环境设置和配置竞价型实例分配策略和相关属性。

Amazon EC2 采用*分配策略*为环境管理和预置竞价型实例。每种分配策略都会根据其定义方式来优化已分配的实例，以处理可用容量、价格和实例类型选择。

Amazon EC2 Auto Scaling 提供了以下适用于竞价型实例的分配策略：
+ **容量优化型策略**（默认）
  + 从实例池中请求竞价型实例，并根据启动的实例数量选择*最佳容量*。
  + 此策略非常适用于必须最大限度地降低服务中断可能性的工作负载。
+ **价格容量优化型策略**
  + 从*中断概率最低*且*价格最低*的实例池中请求竞价型实例。
  + 这是大多数竞价型工作负载的首选。
+ **容量优化优先型策略**
  + 根据*容量可用性首先*请求竞价型实例，同时尽最大努力兑现您选择的*实例类型优先级*。在为 Elastic Beanstalk 配置竞价型实例选项时，您可以提供按优先级排序的实例类型列表。
  + 此策略适用于需要最大限度减少服务中断的工作负载，并且特定实例类型的优先级划分很重要。
+ **最低价格** 
  + 从具有可用实例的*最低价格实例池*中请求竞价型实例。
  + 使用此策略时务必谨慎，因为它仅考虑实例价格而未考虑可用容量，这会导致中断率升高。

有关每种分配策略的更多详细信息，请参阅《Amazon EC2 Auto Scaling User Guide》** 中的 [Allocation strategies for multiple instance types](https://docs.amazonaws.cn/autoscaling/ec2/userguide/allocation-strategies.html)。

为了帮助您了解哪种分配策略最适合满足您环境的要求，请参阅《Amazon EC2 用户指南》**中的[选择合适的竞价型分配策略](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html#ec2-fleet-allocation-use-cases)。

# 管理按需型实例和竞价型实例
按需型实例与竞价型实例

您可以启动并自动扩展单个 Auto Scaling 组中的一组按需实例和竞价型实例。可以同时使用以下选项来配置 Auto Scaling 服务管理您环境中竞价型实例和按需型实例的方式。

您可以使用 [Elastic Beanstalk 控制台](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console)、[命名空间配置选项](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)、[Amazon CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 或 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli) 为环境配置这些选项。

以下选项是 [aws:ec2:instances](command-options-general.md#command-options-general-ec2instances) 命名空间的一部分：
+ `EnableSpot`：当设置为 `true` 时，此设置会为您的环境启用竞价型实例请求。
+ `SpotFleetOnDemandBase`：此选项会设置在随着环境纵向扩展时考虑竞价型实例之前自动扩缩组预置的最小按需型实例数量。
+ `SpotFleetOnDemandAboveBasePercentage`：自动扩缩组在 `SpotOnDemandBase` 实例之外作为额外容量预置的按需型实例的百分比。

全面列出的选项与 [aws:autoscaling:asg](command-options-general.md#command-options-general-autoscalingasg) 命名空间中的以下选项相关联：
+ `MinSize`：自动扩缩组中所需的最小实例数量。
+ `MaxSize`：自动扩缩组中所需的最大实例数量。

**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

## 同时应用两组命名空间选项
同时应用两个命名空间选项

以下几点描述了将这些选项设置组合起来使用对环境扩展有何影响。
+ 只有 `MinSize` 决定了您环境的初始容量，即您希望运行的最低实例数。
+  `SpotFleetOnDemandBase` 不会影响初始容量。在启用竞价型实例的情况下，此选项决定在考虑竞价型实例前，先预置的按需型实例数量。
+ 考虑何时 `SpotFleetOnDemandBase` 小于 `MinSize`。您仍然会得到完全的 `MinSize` 实例作为初始容量。至少这些实例中的 `SpotFleetOnDemandBase` 必须是按需实例。
+ 考虑何时 `SpotFleetOnDemandBase` 大于 `MinSize`。随着环境的扩展，将保证您至少可获得等于两个值之间的差值的额外实例数。换句话说，可以保证您在满足 `SpotFleetOnDemandBase` 要求之前至少获得额外的按需 `(SpotFleetOnDemandBase - MinSize)` 实例。

**单实例环境**  
在生产环境中，将 Spot 实例作为可扩展、负载均衡的环境的一部分尤其有用。我们建议不要在单实例环境中使用 Spot。如果 Spot 实例不可用，您可能会丢失环境的所有容量（单实例）。您仍可以在单实例环境中使用 Spot 实例进行开发或测试。此种情况下，请务必将 `SpotFleetOnDemandBase` 和 `SpotFleetOnDemandAboveBasePercentage` 均设置为零。任何其他设置都会导致使用按需实例。

## 扩展选项设置示例
示例

以下示例演示了设置各种调整选项的不同方案。所有示例都采用已启用 Spot 实例请求的负载均衡环境。

**Example 1：初始容量包含按需实例和 Spot 实例**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**选项设置**  

|  **选项**  |  **命名空间**  |  **值**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `10`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

在此示例中，环境的初始实例数是十个，其中七个是按需实例（四个基本实例，以及基本实例以外的六个实例的 50%），三个是 Spot 实例。该环境最多可扩展到 24 个实例。扩展时，队列中四个基本按需实例以外的按需实例比例保持为 50%，该队列整体最多可包含 24 个实例，其中 14 个是按需实例（4 个基本实例，以及基本实例以外的 20 个实例的 50%），10 个是 Spot 实例。



**Example 2：所有按需初始容量**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**选项设置**  

|  **选项**  |  **命名空间**  |  **值**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `4`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

在此示例中，环境的初始实例数是四个，所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。扩展时，队列中四个基本按需实例以外的按需实例比例保持为 50%，该队列整体最多可包含 24 个实例，其中 14 个是按需实例（4 个基本实例，以及基本实例以外的 20 个实例的 50%），10 个是 Spot 实例。

**Example 3：初始容量以外的额外按需基本实例**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**选项设置**  

|  **选项**  |  **命名空间**  |  **值**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `3`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

在此示例中，环境的初始实例数是三个，所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。除开三个初始实例以外添加的第一个实例是按需实例，用于凑齐四个基本按需实例。随着进一步扩展，队列中四个基本按需实例以外的按需实例比例保持为 50%，该队列整体最多可包含 24 个实例，其中 14 个是按需实例（4 个基本实例，以及基本实例以外的 20 个实例的 50%），10 个是 Spot 实例。

# Elastic Beanstalk 环境的容量配置
配置

本主题介绍为您的 Elastic Beanstalk 环境配置 Auto Scaling 容量的不同方法。您可以使用 Elastic Beanstalk 控制台、EB CLI Amazon CLI、或命名空间选项。

**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

## 使用控制台的配置
控制台

您可以通过在 [Elastic Beanstalk 控制台](environments-console.md)中环境的**配置**页面上编辑**容量**来配置自动扩缩组的容量管理方式。

**在 Elastic Beanstalk 控制台中配置自动扩缩组容量**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

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

1. 在 **Capacity (容量)** 配置类别中，选择 **Edit (编辑)**。

1. 在 **Auto Scaling group (Auto Scaling 组)** 部分中，配置以下设置。
   + **Environment type (环境类型)** - 选择 **Load balanced (负载均衡)**。
   + **Min instances (最小实例数)** - 组在任何时间均应包含的最小 EC2 实例数。组从最小计数开始，当满足扩展触发条件时，则添加实例。
   + **Max instances (最大实例数)** - 组在任何时间均应包含的最大 EC2 实例数。
**注意**  
如果您使用滚动更新，请确保最大实例计数高于滚动更新的 [**Minimum instances in service (使用的最小实例数)** 设置](using-features.rollingupdates.md#rollingupdates-configure)。
   + **机群组合** (Fleet composition) — 默认值为**按需实例**。要启用 *Spot 实例*请求，请选择**组合购买选项和实例**。
**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

     如果选择启用 *Spot 实例*请求，请启用以下选项：
     + **竞价型分配策略**：根据可用容量、价格和实例类型选择，确定在您的环境中管理和预置竞价型实例的方法。从*容量优化型策略*（默认）、*价格容量优化新房策略*、*容量优化优先性策略*或*最低价格策略*中选择。有关每种分配策略的描述和更多信息，请参阅[竞价型实例的分配策略](environments-cfg-autoscaling-spot-allocation-strategy.md)。
     + **最高 Spot 价格** — 有关竞价型实例最高价格选项的建议，请参阅《*Amazon EC2 用户指南*》中的[竞价型实例定价历史记录](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-spot-instances-history.html)。
     + **按需基准** (On-Demand base) – 向外扩展环境时，在考虑 Spot 实例之前，Auto Scaling 组预配置的最小按需实例数。
     + **按需上方基准** (On-Demand above base)– Auto Scaling 组在按需基本实例之外调配的任何额外容量中，按需实例所占的百分比。
**注意**  
**按需型实例基本比例**和**超出基本比例的按需实例百分比**选项与前面列出的**最小数量**和**最大数量***实例*选项相关联。有关这些选项和例子的更多信息，请参阅 [Elastic Beanstalk 环境的竞价型实例支持](environments-cfg-autoscaling-spot.md)。
     + **容量重新平衡**：仅当自动扩缩组中至少有一个竞价型实例时，此选项才适用。启用此功能后，EC2 会在中断前自动尝试替换自动扩缩组中的竞价型实例，以最大限度地减少竞价型实例中断对应用程序的影响。有关更多信息，请参阅《Amazon EC2 Auto Scaling User Guide》** 中的 [Capacity Rebalancing](https://docs.amazonaws.cn/autoscaling/ec2/userguide/capacity-rebalance.html)
   + **架构**：EC2 实例的处理器架构。处理器架构决定了下一个字段中可用的 EC2 实例类型。
   + **实例类型**：为运行应用程序而启动的 Amazon EC2 实例的类型。有关更多信息，请参阅 [实例类型](using-features.managing.ec2.console.md#using-features.managing.ec2.instancetypes)。
   + **AMI ID** - Elastic Beanstalk 用来启动环境中的 Amazon EC2 实例的计算机映像。有关更多信息，请参阅 [AMI ID](using-features.managing.ec2.console.md#using-features.managing.ec2.customami)。
   + **Availability Zones (可用区)** - 选择环境实例要跨越的可用区的数量。默认情况下，Auto Scaling 组会在所有可用区中均匀启动实例。要将实例集中在少数几个区域中，请选择要使用的区域数。对于生产环境而言，至少要使用两个区域，以确保当一个可用区中断服务时您的应用程序仍然可用。
   + **Placement (放置)**（可选）- 选择要使用的可用区。如果您的实例需要连接至特定区域中的资源或者您购买了区域特定的[预留实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)，请使用此设置。如果您在自定义 VPC 中启动环境，则无法配置此选项。在自定义 VPC 中，您需要为分配给环境的子网选择可用区。
   + **Scaling cooldown (扩展冷却时间)** - 在扩展之后、在继续评估触发器之前等待实例启动或终止的时间（以秒为单位）。有关更多信息，请参阅[扩展冷却时间](https://docs.amazonaws.cn/autoscaling/ec2/userguide/Cooldown.html)。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## 使用命名空间选项进行配置
命名空间选项

Elastic Beanstalk 在以下两个命名空间中提供了用于 Auto Scaling 设置的[配置选项](command-options.md)：[`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 和 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances)。

### aws:autoscaling:asg 命名空间


[`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 命名空间提供了用于整体调整和可用性的选项。

以下[配置文件](ebextensions.md)示例配置 Auto Scaling 组以便使用两到四个实例、特定可用区和 12 分钟（720 秒）的冷却时间。它为竞价型实例启用了[容量重新平衡](https://docs.amazonaws.cn/autoscaling/ec2/userguide/capacity-rebalance.html)。只有在 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 命名空间中将 `EnableSpot` 设置为 `true` 时，`EnableCapacityRebalancing` 选项才会生效，如下面的配置文件示例所示。

```
option_settings:
  aws:autoscaling:asg:
    Availability Zones: Any
    Cooldown: '720'
    Custom Availability Zones: 'us-west-2a,us-west-2b'
    MaxSize: '4'
    MinSize: '2'
    EnableCapacityRebalancing: true
```

### aws:ec2:instances 命名空间


**注意**  
当您更新环境配置并从 `InstanceTypes` 选项中删除一个或多个实例类型时，Elastic Beanstalk 会终止在任何已删除的实例类型上运行的任何 Amazon EC2 实例。然后，您环境的 Auto Scaling 组根据需要启动新实例，以使用当前指定的实例类型来完成所需的容量。

[`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 命名空间提供与环境的实例相关的选项，包括 Spot 实例管理。它是 [`aws:autoscaling:launchconfiguration`](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 和 [`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 的补充。

以下[配置文件](ebextensions.md)示例配置 Auto Scaling 组，以便为环境启用 Spot 实例请求。它指定了三种可以使用的实例类型。至少采用一个按需实例作为基准容量，并采用 33% 的按需实例作为补充用的任何额外容量。

此配置将[竞价型分配策略](environments-cfg-autoscaling-spot-allocation-strategy.md)设置为 `capacity-optimized-prioritized`。这种特殊的分配策略根据 `InstanceTypes` 选项中指定的实例类型的顺序确定实例从实例池中启动的优先级。如果未指定 `SpotAllocationStrategy`，则其默认为 `capacity-optimized`。

```
option_settings:
  aws:ec2:instances:
    EnableSpot: true
    InstanceTypes: 't2.micro,t3.micro,t3.small'    
    SpotAllocationStrategy: capacity-optimized-prioritized
    SpotFleetOnDemandBase: '1'
    SpotFleetOnDemandAboveBasePercentage: '33'
```

要选择 Spot 实例类型，请使用 [Spot Instance Advisor](https://www.amazonaws.cn/ec2/spot/instance-advisor/)。

**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

## 使用 Amazon CLI
Amazon CLI

本节提供了一些示例，说明如何使用 Amazon CLI [create-](https://docs.amazonaws.cn/cli/latest/reference/elasticbeanstalk/create-environment.html) environment 命令通过这些部分中描述的 Auto Scaling 和 Capacity 选项来配置您的环境。您会注意到，此示例中还配置了前面[命名空间配置选项](#environments-cfg-autoscaling-namespace)一节中所述的 [`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 和 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 的命名空间设置。

 Amazon 命令行界面提供用于创建和配置 Elastic Beanstalk 环境的命令。使用 `--option-settings` 选项，您可以传入 Elastic Beanstalk 支持的命名空间选项。这意味着前面描述的[命名空间配置选项](#environments-cfg-autoscaling-namespace)可以传递到适用的 Amazon CLI 命令中，以配置您的 Elastic Beanstalk 环境。

**注意**  
您还可以使用带有 `--option-settings` 的 [update-environment](https://docs.amazonaws.cn/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令来添加或更新命名空间选项。如果您需要从环境中移除任何命名空间选项，请使用带有 `--options-to-remove` 的 **update-environment** 命令。

以下示例会创建一个新环境。有关传入的选项的更多上下文信息，请参阅上一个[命名空间配置选项](#environments-cfg-autoscaling-namespace)主题。

列出的第一个选项，即 [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 命名空间中的 `IamInstanceProfile`，是 Elastic Beanstalk [实例配置文件](concepts-roles-instance.md)。创建新环境时需要该选项。

**Example ：使用 Auto Scaling 选项创建环境（命名空间选项内联）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
Namespace=aws:autoscaling:asg,OptionName=Availability Zones,Value=Any \
Namespace=aws:autoscaling:asg,OptionName=Cooldown,Value=720 \
Namespace=aws:autoscaling:asg,OptionName=Custom Availability Zones,Value=us-west-2a,us-west-2b \
Namespace=aws:autoscaling:asg,OptionName=MaxSize,Value=4 \
Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=2 \
Namespace=aws:autoscaling:asg,OptionName=EnableCapacityRebalancing,Value=true \
Namespace=aws:ec2:instances,OptionName=EnableSpot,Value=true \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t2.micro,t3.micro,t3.small \
Namespace=aws:ec2:instances,OptionName=SpotAllocationStrategy,Value=capacity-optimized-prioritized \
Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandBase,Value=1 \
Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandAboveBasePercentage,Value=33
```





**重要**  
`EnableSpot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。





作为替代方法，请使用 `options.json` 文件来指定命名空间选项，而不是将其内联。

**Example ：使用 Auto Scaling 选项创建环境（`options.json` 文件中的命名空间选项）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12"
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
    {
        "Namespace": "aws:autoscaling:launchconfiguration",
        "OptionName": "IamInstanceProfile",
        "Value": "aws-elasticbeanstalk-ec2-role"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Availability Zones",
        "Value": "Any"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Cooldown",
        "Value": "720"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Custom Availability Zones",
        "Value": "us-west-2a,us-west-2b"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MaxSize",
        "Value": "4"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MinSize",
        "Value": "2"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "EnableCapacityRebalancing",
        "Value": "true"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "EnableSpot",
        "Value": "true"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "InstanceTypes",
        "Value": "t2.micro,t3.micro,t3.small"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotAllocationStrategy",
        "Value": "capacity-optimized-prioritized"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotFleetOnDemandBase",
        "Value": "1"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotFleetOnDemandAboveBasePercentage",
        "Value": "33"
    }
]
```

## 使用 EB CLI 进行配置
EB CLI

使用 [**eb create**](eb3-create.md) 命令创建环境时，可以指定几个与环境的 Auto Scaling 组相关的选项。这些选项可帮助您控制环境的容量。

`--single`  
使用一个 Amazon EC2 实例创建环境，并且不使用负载均衡器。如果您未使用此选项，负载均衡器会被添加到创建的环境中。

`--enable-spot`  
为您的环境启用 Spot 实例请求。  
`enable-spot` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。
只有 [**eb create**](eb3-create.md) 命令的以下这些选项才能与 `--enable-spot` 一起使用。    
`--instance-types`  
列出您希望环境使用的 Amazon EC2 实例类型。  
`--spot-max-price`  
您愿意为 Spot 实例支付的每单位小时的最高价（美元）。有关竞价型实例最高价格选项的建议，请参阅《*Amazon EC2 用户指南*》中的[竞价型实例定价历史记录](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-spot-instances-history.html)。  
`--on-demand-base-capacity`  
扩展环境时，在考虑 Spot 实例之前，Auto Scaling 组预配置的最小按需实例数。  
`--on-demand-above-base-capacity`  
Auto Scaling 组在 `--on-demand-base-capacity` 选项指定的超过的实例数作为额外容量预配置的按需实例的百分比。

以下示例创建一个环境，并配置 Auto Scaling 组以便为新环境启用 Spot 实例请求。在此示例中，可以使用这三种实例类型。

```
$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
```

**重要**  
还有另一个名称类似的选项，称为 `--instance-type`（无“s”），EB CLI 仅在处理按需实例时识别该选项。请勿将 `--instance-type`（无“s”）与 `--enable-spot` 选项一同使用。如果您这样做，EB CLI 将忽略它。请改为将 `--instance-types`（带有“s”）与 `--enable-spot` 选项一同使用。