

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

# 使用多个启动模板
<a name="ec2-auto-scaling-mixed-instances-groups-launch-template-overrides"></a>

除了使用多种实例类型外，您还可以使用多种启动模板。

例如，假设您为计算密集型应用程序配置自动扩缩组，并希望混合 C5、C5a 和 C6g 实例类型。但是，C6g 实例采用基于 64 位 A Amazon rm 架构的 Graviton 处理器，而 C5 和 C5a 实例则在 64 位英特尔 x86 处理器上运行。 AMIs 适用于 C5 和 C5a 的实例都适用于其中的每一个实例，但不能在 C6g 实例上运行。要解决此问题，请对 C6g 实例使用不同的启动模板。您仍然可以对 C5 和 C5a 实例使用相同的启动模板。

本节包含使用执行与 Amazon CLI 使用多个启动模板相关的任务的过程。目前，仅当您使用 Amazon CLI 或 SDK 时此功能才可用，并且不可从控制台使用。

**Topics**
+ [配置自动扩缩组以使用多个启动模板](#configue-auto-scaling-group-to-use-multiple-launch-templates)
+ [相关资源](#multiple-launch-templates-related-resources)

## 配置自动扩缩组以使用多个启动模板
<a name="configue-auto-scaling-group-to-use-multiple-launch-templates"></a>

您可以将自动扩缩组配置为使用多个启动模板，如以下示例所示。

**要将新的自动扩缩组配置为使用多个启动模板 (Amazon CLI)**  
使用 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令。例如，以下命令将创建一个新的自动扩缩组。它指定 `c5.large`、`c5a.large` 和 `c6g.large` 实例类型，并为 `c6g.large` 实例类型定义新的启动模板，以确保使用适当的 AMI 启动 Arm 实例。Amazon EC2 Auto Scaling 使用实例类型顺序确定在满足按需容量时应首先使用哪一实例类型。

```
aws autoscaling create-auto-scaling-group --cli-input-json {{file://~/config.json}}
```

`config.json` 文件包含以下代码。

```
{
  "AutoScalingGroupName":"{{my-asg}}",
  "MixedInstancesPolicy":{
    "LaunchTemplate":{
      "LaunchTemplateSpecification":{
        "LaunchTemplateName":"{{my-launch-template-for-x86}}",
        "Version":"{{$Latest}}"
      },
      "Overrides":[
        {
          "InstanceType":"{{c6g.large}}",
          "LaunchTemplateSpecification": {
            "LaunchTemplateName": "{{my-launch-template-for-arm}}",
            "Version": "{{$Latest}}"
          }
        },
        {
          "InstanceType":"{{c5.large}}"
        },
        {
          "InstanceType":"{{c5a.large}}"
        }
      ]
    },
    "InstancesDistribution":{
      "OnDemandBaseCapacity": {{1}},
      "OnDemandPercentageAboveBaseCapacity": {{50}},
      "SpotAllocationStrategy": "capacity-optimized"
    }
  },
  "MinSize":{{1}},
  "MaxSize":{{5}},
  "DesiredCapacity":{{3}},
  "VPCZoneIdentifier":"{{subnet-5ea0c127}},{{subnet-6194ea3b}},{{subnet-c934b782}}",
  "Tags":[ ]
}
```

**将现有自动扩缩组配置为使用多个启动模板 (Amazon CLI)**  
使用 [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) 命令。例如，以下命令将名为 `{{my-launch-template-for-arm}}` 的自动扩缩组的 `{{c6g.large}}` 实例类型分配名为 {{`my-asg`}} 的启动模板。

```
aws autoscaling update-auto-scaling-group --cli-input-json {{file://~/config.json}}
```

`config.json` 文件包含以下内容。

```
{
  "AutoScalingGroupName":"{{my-asg}}",
  "MixedInstancesPolicy":{
    "LaunchTemplate":{
      "Overrides":[
        {
          "InstanceType":"{{c6g.large}}",
          "LaunchTemplateSpecification": {
            "LaunchTemplateName": "{{my-launch-template-for-arm}}",
            "Version": "{{$Latest}}"
          }
        },
        {
          "InstanceType":"{{c5.large}}"
        },
        {
          "InstanceType":"{{c5a.large}}"
        }
      ]
    }
  }
}
```

**将新的自动扩缩组配置为使用多个启动模板和基于属性的实例类型选择（Amazon CLI）**  
使用 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令。例如，以下命令通过为带有 ARM AMI 的 Amazon Graviton 实例指定启动模板以及为具有 x86 AMI 的 AMD 或英特尔实例指定其他启动模板来创建新的 Auto Scaling 组。然后，该命令两次使用[基于属性的实例选择](create-mixed-instances-group-attribute-based-instance-type-selection.md)，从多种实例类型中为每个 CPU 架构选择实例。您可以使用[update-autoscaling-group](https://docs.amazonaws.cn/cli/latest/reference/autoscaling/update-auto-scaling-group.html)命令向现有 Auto Scaling 组添加类似的配置。

```
aws autoscaling create-auto-scaling-group --cli-input-json {{file://~/config.json}}
```

`config.json` 文件包含以下内容。

```
{
  "AutoScalingGroupName":"{{my-asg}}",
  "MixedInstancesPolicy":{
    "LaunchTemplate":{
      "LaunchTemplateSpecification":{
        "LaunchTemplateName":"{{my-launch-template-for-arm}}",
        "Version":"{{$Latest}}"
      },
      "Overrides":[
        {
          "InstanceRequirements": {
            "VCpuCount": {"Min": {{2}}},
            "MemoryMiB": {"Min": {{2048}}},
            "CpuManufacturers": ["amazon-web-services"]
          }
         },
         {
           "InstanceRequirements": {
            "VCpuCount": {"Min": {{2}}},
            "MemoryMiB": {"Min": {{2048}}},
            "CpuManufacturers": ["intel", "amd"]
          },
          "LaunchTemplateSpecification": {
            "LaunchTemplateName": "{{my-launch-template-for-x86}}",
            "Version": "{{$Latest}}"
          }
         }
      ]
    },
    "InstancesDistribution":{
      "OnDemandPercentageAboveBaseCapacity": {{0}}, 
      "SpotAllocationStrategy": "price-capacity-optimized"
    }
  },
  "MinSize":{{1}},
  "MaxSize":{{10}},
  "DesiredCapacity":{{6}},
  "VPCZoneIdentifier":"{{subnet-5ea0c127}},{{subnet-6194ea3b}},{{subnet-c934b782}}",
  "Tags":[ ]
}
```

**验证 Auto Scaling 组的启动模板**  
使用以下命令之一：
+ [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) (Amazon CLI)
+ [获取-ASAuto ScalingGroup](https://docs.amazonaws.cn/powershell/latest/reference/items/Get-ASAutoScalingGroup.html) (Amazon Tools for Windows PowerShell)

## 相关资源
<a name="multiple-launch-templates-related-resources"></a>

[你可以在 re: Post 的模板中找到使用基于属性的实例类型选择来指定多个启动 Amazon CloudFormation 模板的示例。Amazon](https://repost.aws/articles/ARQeKDQX68TcqipYaaisl6bA/cloudformation-auto-scaling-group-sample-template-for-mixed-x86-intel-amd-and-aws-graviton-instances)