

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

# 使用 Elastic Load Balancing 的示例 AWS CLI
<a name="examples-elastic-load-balancing-aws-cli"></a>

使用 AWS Command Line Interface (AWS CLI) 来连接、分离和描述负载均衡器和目标组，添加和移除 Elastic Load Balancing 运行状况检查，以及更改启用了哪些可用区。

本主题显示了执行 Amazon EC2 Auto Scaling 常见任务的 AWS CLI 命令示例。

**重要**  
有关更多命令示例，请参阅*AWS CLI 命令参考*中的[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/index.html) 和 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/index.html)。

**Topics**
+ [附加目标组或经典负载均衡器](#example-attach-traffic-sources)
+ [描述您的目标组或经典负载均衡器](#example-describe-traffic-sources)
+ [添加 Elastic Load Balancing 运行状况检查](#example-add-elb-healthcheck)
+ [更改您的可用区](#example-specify-availability-zones)
+ [分离目标组或经典负载均衡器](#example-detach-traffic-sources)
+ [移除 Elastic Load Balancing 运行状况检查](#example-remove-elb-healthcheck)
+ [旧版命令](#legacy-commands)

## 附加目标组或经典负载均衡器
<a name="example-attach-traffic-sources"></a>

使用以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建 Auto Scaling 组，并通过指定目标组的亚马逊资源名称 (ARN) 来同时附加目标组。目标组可以关联至应用程序负载均衡器、网络负载均衡器或网关负载均衡器。

替换 `--auto-scaling-group-name`、`--vpc-zone-identifier`、`--min-size` 和 `--max-size` 的示例值。对于 `--launch-template` 选项，请将 `{{my-launch-template}}` 和 `{{1}}` 替换为您的自动扩缩组的启动模板的名称和版本。对于 `--traffic-sources` 选项，将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
  --launch-template LaunchTemplateName={{my-launch-template}},Version='{{1}}' \
  --vpc-zone-identifier "{{subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782}}" \
  --min-size {{1}} --max-size {{5}} \
  --traffic-sources "Identifier={{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1}}"
```

在 Auto Scaling 组创建后，使用[attach-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-traffic-sources.html)命令将其他目标组附加到 Auto Scaling 组。

以下命令可将另一个目标组添加到同一个组。

```
aws autoscaling attach-traffic-sources --auto-scaling-group-name {{my-asg}} \
  --traffic-sources "Identifier={{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2}}"
```

或者，要将经典负载均衡器附加到您的组，请在使用 **create-auto-scaling-group** 或 **attach-traffic-sources** 时指定 `--traffic-sources` 和 `--type` 选项，如以下示例所示。请将 `{{my-classic-load-balancer}}` 替换为经典负载均衡器的名称。对于 `--type` 选项，请指定 `elb` 的值。

```
--traffic-sources "Identifier={{my-classic-load-balancer}}" --type elb
```

## 描述您的目标组或经典负载均衡器
<a name="example-describe-traffic-sources"></a>

要描述附加到 Auto Scaling 组的负载均衡器或目标组，请使用以下[describe-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-traffic-sources.html)命令。将 `{{my-asg}}` 替换为您的组名。

```
aws autoscaling describe-traffic-sources --auto-scaling-group-name {{my-asg}}
```

该示例会返回附加到自动扩缩组的 Elastic Load Balancing 目标组的 ARN。

```
{
    "TrafficSources": [
        {
            "Identifier": "arn:aws:elasticloadbalancing:{{region}}:{{account-id}}:targetgroup/{{my-targets/12345678EXAMPLE1}}",
            "State": "InService",
            "Type": "elbv2"
        },
        {
            "Identifier": "arn:aws:elasticloadbalancing:{{region}}:{{account-id}}:targetgroup/{{my-targets/12345678EXAMPLE2}}",
            "State": "InService",
            "Type": "elbv2"
        }
    ]
}
```

有关输出中的 `State` 字段说明，请参阅 [验证负载均衡器的附加状态](load-balancer-status.md)。

## 添加 Elastic Load Balancing 运行状况检查
<a name="example-add-elb-healthcheck"></a>

要将 Elastic Load Balancing 运行状况检查添加到您的 Auto Scaling 组对实例执行的运行状况检查中，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令并指定`ELB`为该`--health-check-type`选项的值。将 `{{my-asg}}` 替换为您的组名。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
  --health-check-type "ELB"
```

新实例通常需要时间进行短暂的预热，然后才能通过运行状况检查。如果宽限期没有提供足够的预热时间，则实例可能未准备好提供流量。Amazon EC2 Auto Scaling 可能会将这些实例视为运行状况不佳并替换它们。

若要更新运行状况检查宽限期，请在使用 **update-auto-scaling-group** 时使用 `--health-check-grace-period` 选项，如以下示例所示。如果发现新实例运行状况不佳，则将其终止之前，将其替换{{300}}为保持运行状态的秒数。

```
--health-check-grace-period {{300}}
```

有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 更改您的可用区
<a name="example-specify-availability-zones"></a>

更改可用区时，应注意某些限制。有关更多信息，请参阅 [添加可用区删除可用区](as-add-az-console.md)。

**更改应用程序负载均衡器或网络负载均衡器的可用区**

1. 在更改负载均衡器的可用区之前，最好先更新自动扩缩组的可用区，以验证您的实例类型是否可在指定区域中使用。

   要更新您的 Auto Scaling 组的可用区域，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。用指定的子网替换先前启用的子网。将 `{{my-asg}}` 替换为您的组名。

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
     --vpc-zone-identifier "{{subnet-41767929,subnet-cb663da2,subnet-8360a9e7}}"
   ```

1. 使用以下[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令验证新子网中的实例是否已启动。如果实例已启动，您将看到实例及其状态的列表。将 `{{my-asg}}` 替换为您的组名。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name {{my-asg}}
   ```

1. 使用以下 [set-subnets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/set-subnets.html) 命令为您的负载均衡器指定子网。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。每个可用区您只能指定一个子网。用指定的子网替换先前启用的子网。将 `{{my-lb-arn}}` 替换为负载均衡器的 ARN。

   ```
   aws elbv2 set-subnets --load-balancer-arn {{my-lb-arn}} \
     --subnets {{subnet-41767929}} {{subnet-cb663da2}} {{subnet-8360a9e7}}
   ```

**更改经典负载均衡器的可用区**

1. 在更改负载均衡器的可用区之前，最好先更新自动扩缩组的可用区，以验证您的实例类型是否可在指定区域中使用。

   要更新您的 Auto Scaling 组的可用区域，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。用指定的子网替换先前启用的子网。将 `{{my-asg}}` 替换为您的组名。

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
     --vpc-zone-identifier "{{subnet-41767929,subnet-cb663da2}}"
   ```

1. 使用以下[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令验证新子网中的实例是否已启动。如果实例已启动，您将看到实例及其状态的列表。将 `{{my-asg}}` 替换为您的组名。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name {{my-asg}}
   ```

1. 使用以下 [attach-load-balancer-to-subnet](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/attach-load-balancer-to-subnets.html) s 命令为您的 Classic Load Balancer 启用新的可用区。将示例子网 ID 替换为要启用的可用区的子网 ID。将 `{{my-lb}}` 替换为您负载均衡器的名称。

   ```
   aws elb attach-load-balancer-to-subnets --load-balancer-name {{my-lb}} \
     --subnets {{subnet-cb663da2}}
   ```

   要禁用可用区，请使用以下 [detach-load-balancer-from-subnets 命令](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/detach-load-balancer-from-subnets.html)。将示例子网 ID 替换为要禁用的可用区的子网 ID。将 `{{my-lb}}` 替换为您负载均衡器的名称。

   ```
   aws elb detach-load-balancer-from-subnets --load-balancer-name {{my-lb}} \
     --subnets {{subnet-8360a9e7}}
   ```

## 分离目标组或经典负载均衡器
<a name="example-detach-traffic-sources"></a>

当您不再需要目标组时，以下[detach-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-traffic-sources.html)命令会将其从 Auto Scaling 组中分离出来。

对于 `--auto-scaling-group-name` 选项，请将 `{{my-asg}}` 替换为您的组名称。对于 `--traffic-sources` 选项，将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

```
aws autoscaling detach-traffic-sources --auto-scaling-group-name {{my-asg}} \
  --traffic-sources "Identifier={{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456}}"
```

要将经典负载均衡器与您的组分离，请指定 `--traffic-sources` 和 `--type` 选项，如以下示例所示。请将 `{{my-classic-load-balancer}}` 替换为经典负载均衡器的名称。对于 `--type` 选项，请指定 `elb` 的值。

```
--traffic-sources "Identifier={{my-classic-load-balancer}}" --type elb
```

## 移除 Elastic Load Balancing 运行状况检查
<a name="example-remove-elb-healthcheck"></a>

要从 Auto Scaling 组中移除 Elastic Load Balancing 运行状况检查，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令并指定`EC2`为该`--health-check-type`选项的值。将 `{{my-asg}}` 替换为您的组名。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
  --health-check-type "EC2"
```

有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 旧版命令
<a name="legacy-commands"></a>

以下示例演示如何使用旧版 CLI 命令附加、分离和描述负载均衡器和目标组。本文档中将保留这些命令，以供希望使用它们的客户参考。我们继续支持旧版 CLI 命令，但我们建议您使用新版“流量来源”CLI 命令，该命令可以附加和分离多种流量源类型。您可以在同一自动扩缩组上同时使用旧版 CLI 命令和“流量来源”CLI 命令。

### 附加您的目标组或经典负载均衡器（遗留）
<a name="example-attach-load-balancer-target-group"></a>

**附加您的目标组**  
以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建带有附加目标组的 Auto Scaling 组。为 Application Load Balancer、Network Load Balancer 或网关负载均衡器指定目标组的 Amazon Resource Name (ARN)。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
  --launch-template LaunchTemplateName={{my-launch-template}},Version='{{1}}' \
  --vpc-zone-identifier "{{subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782}}" \
  --target-group-arns "{{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456}}" \
  --min-size {{1}} --max-size {{5}}
```

以下 [attach-load-balancer-target-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-load-balancer-target-groups.html) 命令将目标组附加到现有的 Auto Scaling 组。

```
aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name {{my-asg}} \
  --target-group-arns "{{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456}}"
```

**附加您的经典负载均衡器**  
以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建附带了 Classic Load Balancer 的 Auto Scaling 组。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name {{my-asg}} \
  --launch-configuration-name {{my-launch-config}} \
  --vpc-zone-identifier "{{subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782}}" \
  --load-balancer-names "{{my-load-balancer}}" \
  --min-size {{1}} --max-size {{5}}
```

以下[attach-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-load-balancers.html)命令将指定的 Classic Load Balancer 附加到现有的 Auto Scaling 组。

```
aws autoscaling attach-load-balancers --auto-scaling-group-name {{my-asg}} \
  --load-balancer-names {{my-lb}}
```

### 描述您的目标组或经典负载均衡器（旧版）
<a name="example-describe-load-balancer-target-groups"></a>

**描述目标组**  
要描述与 Auto Scaling 群组关联的目标群组，请使用 [describe-load-balancer-target-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-load-balancer-target-groups.html) 命令。以下示例列出了的目标群体{{my-asg}}。

```
aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-name {{my-asg}}
```

**描述经典负载均衡器**  
要描述与 Auto Scaling 组关联的传统负载均衡器，请使用[describe-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-load-balancers.html)命令。以下示例列出了适用于的经典负载均衡器。{{my-asg}}

```
aws autoscaling describe-load-balancers --auto-scaling-group-name {{my-asg}}
```

### 分离目标组或经典负载均衡器（旧版）
<a name="example-detach-load-balancer-target-group"></a>

**分离目标组**  
当你不再需要目标[detach-load-balancer-target组时，以下-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-load-balancer-target-groups.html) groups命令会将目标组从你的 Auto Scaling 组中分离出来。

```
aws autoscaling detach-load-balancer-target-groups --auto-scaling-group-name {{my-asg}} \
  --target-group-arns "{{arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456}}"
```

**分离经典负载均衡器**  
当您不再需要 Classic Load Balancer 时，以下[detach-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-load-balancers.html)命令会将其从您的 Auto Scaling 组中分离。

```
aws autoscaling detach-load-balancers --auto-scaling-group-name {{my-asg}} \
  --load-balancer-names {{my-lb}}
```