

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

# 使用同步配置启动实例
<a name="launching-instances-synchronous-provisioning"></a>

您可以使用该 LaunchInstances API 同步启动 Auto Scaling 组中特定数量的实例。API 在您指定的可用区或子网中启动实例，并立即返回实例 IDs 或错误信息。

## 先决条件
<a name="prerequisites-synchronous-provisioning"></a>

在使用 LaunchInstances API 之前，您必须具备以下条件：
+ 使用启动模板的 Auto Scaling 组（不支持启动配置）
+ 您必须拥有以下 IAM 操作的权限：
  + `autoscaling:LaunchInstances`
  + `ec2:CreateFleet`
  + `ec2:DescribeLaunchTemplateVersions`

## 使用同步配置启动实例
<a name="launch-instances-cli"></a>

您可以通过启动具有同步配置功能的实例 AWS CLI。

### AWS CLI
<a name="aws-cli-launch-instances"></a>

要使用同步配置启动实例，请执行以下操作：

```
aws autoscaling launch-instances \
        --auto-scaling-group-name {{group-name}} \
        --requested-capacity {{number}} \
        [--availability-zones {{zone-name}}] \
        [--subnet-ids {{subnet-id}}] \
        [--availability-zone-ids {{zone-id}}] \
        [--retry-strategy {{none}}|{{retry-with-group-configuration}}] \
        [--client-token {{token}}]
```

#### 示例
<a name="examples-launch-instances"></a>

**在特定可用区启动实例**

```
aws autoscaling launch-instances \
        --auto-scaling-group-name {{my-asg}} \
        --requested-capacity {{3}} \
        --availability-zones {{us-east-1a}} \
        --retry-strategy {{retry-with-group-configuration}}
```

**在特定子网中启动实例**

```
aws autoscaling launch-instances \
        --auto-scaling-group-name {{my-asg}} \
        --requested-capacity {{2}} \
        --subnet-ids {{subnet-12345678}} \
        --retry-strategy {{none}} \
        --client-token {{my-unique-token-123}}
```

#### 处理回复
<a name="handling-responses"></a>

**成功响应的示例：**

```
{
    "AutoScalingGroupName": "my-asg",
    "ClientToken": "my-unique-token-123",
    "Instances": [
        {
            "InstanceType": "m5.xlarge",
            "AvailabilityZone": "us-east-1a",
            "AvailabilityZoneId": "use1-az1",
            "SubnetId": "subnet-12345678",
            "MarketType": "OnDemand",
            "InstanceIds": ["i-0123456789abcdef0", "i-0fedcba9876543210"]
        }
    ],
    "Errors": []
}
```

**有错误的响应示例**

```
{
    "AutoScalingGroupName": "my-asg",
    "ClientToken": "my-unique-token-123",
    "Instances": [],
    "Errors": [
       {
        "InstanceType": "m5.large",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneId": "use1-az1",
        "SubnetId": "subnet-12345678",
        "MarketType": "OnDemand",
        "ErrorCode": "InsufficientInstanceCapacity",
        "ErrorMessage": "There is not enough capacity to fulfill your request for instance type 'm5.large' in 'us-east-1a'"
        }
    ]
}
```

## 处理启动失败和重试
<a name="handle-launch-failures-retries"></a>

当 LaunchInstances API 遇到故障时，您可以使用等效令牌和适当的重试策略来实现重试策略。

您可以使用 client-token 参数来重试请求。您也可以使用以下重试策略：
+ `RetryStrategy: none`（默认）-如果 API 调用失败，Auto Scaling 组的所需容量将保持不变，并且不会自动重试。
+ `RetryStrategy: retry-with-group-configuration`-如果 API 调用失败，Auto Scaling 组的所需容量将按请求的数量增加，Auto Scaling 将使用该组的标准配置和流程自动重试启动实例。

的重试行为`RetryStrategy: retry-with-group-configuration`取决于失败类型：
+ **验证错误**：由于操作无法继续，因此未增加所需容量。例如，无效的参数或不支持的配置。
+ **容量错误**：所需容量已增加，Auto Scaling 将使用组的正常扩展流程重试异步启动实例。

### 使用客户端令牌实现等性
<a name="client-tokens-sp"></a>

该`client-token`参数可确保执行等性操作，并允许安全重试启动请求。

关键行为：
+ 客户令牌的有效期从初始请求算起 8 小时
+ 在 8 小时内使用相同的客户端令牌重试会返回缓存的响应，而不是启动新实例
+ 8 小时后，相同的客户端令牌将启动新的启动操作