

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用同步佈建啟動執行個體
<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 遇到失敗時，您可以使用冪等字符和適當的重試政策來實作重試策略。

您可以使用用戶端字符參數重試請求。您也可以使用下列重試策略：
+ `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 小時後，相同的用戶端字符將啟動新的啟動操作