

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

# IDs 在启动模板中使用 Amazon Systems Manager 参数而不是 AMI
<a name="using-systems-manager-parameters"></a>

本节向您演示如何创建启动模板，该模板指定引用亚马逊机器映像（AMI）ID 的 Amazon Systems Manager 参数。您可以使用存储在您的同一个参数中的参数 Amazon Web Services 账户、从另一个 Amazon Web Services 账户共享的参数或由维护的公共 AMI 的公共参数 Amazon。

使用 Systems Manager 参数，您可以更新 Auto Scaling 组以使用新的 AMI，而 IDs 无需在每次更改 AMI ID 时创建新的启动模板或新版本的启动模板。它们 IDs 可能会定期更改，例如在 AMI 使用最新操作系统或软件更新进行更新时。

您可以使用参数[存储器创建、更新或删除自己的 Systems Manager 参数，该功能](https://docs.amazonaws.cn/systems-manager/latest/userguide/systems-manager-parameter-store.html)为 Amazon Systems Manager。必须先创建 Systems Manager 参数，然后才能在启动模板中使用该参数。首先，您可以创建数据类型为 `aws:ec2:image` 的参数，并输入 AMI ID 作为其值。AMI ID 的格式为 `ami-{{<identifier>}}`，例如，`ami-123example456`。AMI ID 是否正确取决于您在其中启动自动扩缩组的实例类型和 Amazon Web Services 区域 。

有关为 AMI ID 创建有效参数的更多信息，请参阅[创建 Systems Manager 参数](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-paramstore-su-create.html)。

## 创建指定 AMI 参数的启动模板
<a name="using-systems-manager-parameters-create-launch-template"></a>

要创建指定 AMI 参数的启动模板，请使用以下方法之一：

------
#### [ Console ]

**使用 Amazon Systems Manager 参数创建启动模板**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择**启动模板**，然后选择**创建启动模板**。

1. 对于**设备模板名称**，请为您的启动模板输入描述性名称。

1. 在 “**应用程序和操作系统映像（Amazon 系统映像）**” 下，选择 “**浏览更多**” AMIs。

1. 选择搜索栏右侧的箭头按钮，然后选择 “**指定自定义 value/Systems Manager 参数**”。

1. 在**指定自定义值或 Systems Manager 参数**对话框中，执行以下操作：

   1. 对于 **AMI ID 或 Systems Manager 参数字符串**，使用以下格式之一输入 Systems Manager 参数名称：

      要引用公有参数，请执行以下操作：
      + **resolve:ssm:{{public-parameter}}**

      要引用存储在同一账户中的参数，请执行以下操作：
      + **resolve:ssm:{{parameter-name}}**
      + **resolve:ssm:{{parameter-name}}:{{version-number}}**
      + **resolve:ssm:{{parameter-name}}:{{label}}**

      要引用其他 Amazon Web Services 账户共享的参数，请执行以下操作：
      + **resolve:ssm:{{parameter-ARN}}**
      + **resolve:ssm:{{parameter-ARN}}:{{version-number}}**
      + **resolve:ssm:{{parameter-ARN}}:{{label}}**

   1. 选择**保存**。

1. 根据需要配置任何其他启动模板设置，然后选择**创建启动模板**。有关更多信息，请参阅 [为 Auto Scaling 组创建启动模板](create-launch-template.md)。

------
#### [ Amazon CLI ]

要创建指定 Systems Manager 参数的启动模板，您可以使用以下示例命令之一。将每个 {{user input placeholder}} 替换为您自己的信息。

**示例：创建一个启动模板，该模板指定了 Amazon拥有的公共参数**  
请使用以下语法：`resolve:ssm:{{public-parameter}}`，其中 `resolve:ssm` 是标准前缀，`{{public-parameter}}` 是公有参数的路径和名称。

在此示例中，启动模板使用 Amazon提供的公共参数，使用中为您的配置文件配置的最新 Amazon Linux 2 AMI 启动实例。 Amazon Web Services 区域 

```
aws ec2 create-launch-template --launch-template-name {{my-template-for-auto-scaling}} --version-description {{version1}} \
  --launch-template-data file://config.json
```

`config.json` 的内容：

```
{ 
    "ImageId":"resolve:ssm:{{/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
    "InstanceType":"{{t2.micro}}"
}
```

以下为响应示例。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-089c023a30example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2022-12-28T19:52:27.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

**示例：创建指定存储在同一账户中的参数的启动模板**  
使用以下语法：`resolve:ssm:{{parameter-name}}`，其中 `resolve:ssm` 是标准前缀，`{{parameter-name}}` 是 Systems Manager 参数名称。

以下示例可创建一个从名为 `{{golden-ami}}` 的现有 Systems Manager 参数获取 AMI ID 的启动模板。

```
aws ec2 create-launch-template --launch-template-name {{my-template-for-auto-scaling}} \
  --launch-template-data file://config.json
```

`config.json` 的内容：

```
{ 
    "ImageId":"resolve:ssm:{{golden-ami}}",
    "InstanceType":"{{t2.micro}}"
}
```

如果未指定，则参数的默认版本为最新版本。

以下示例引用 {{`golden-ami`}} 参数的特定版本。该示例使用 {{`golden-ami`}} 参数的版本 {{`3`}}，但您可以使用任何有效的版本号。

```
{ 
    "ImageId":"resolve:ssm:{{golden-ami:3}}",
    "InstanceType":"{{t2.micro}}"
}
```

以下类似示例引用了映射到 {{`golden-ami`}} 参数特定版本的参数标签 {{`prod`}}。

```
{ 
    "ImageId":"resolve:ssm:{{golden-ami:prod}}",
    "InstanceType":"{{t2.micro}}"
}
```

下面是示例输出。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-068f72b724example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2022-12-27T17:11:21.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

**示例：创建启动模板以指定与另一个共享的参数 Amazon Web Services 账户**  
使用以下语法：`resolve:ssm:{{parameter-ARN}}`，其中 `resolve:ssm` 是标准前缀，而 `{{parameter-ARN}}` 是 Systems Manager 参数的 ARN。

以下示例可创建一个从 ARN 为 `{{arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter}}` 的现有 Systems Manager 参数获取 AMI ID 的启动模板。

```
aws ec2 create-launch-template --launch-template-name {{my-template-for-auto-scaling}} --version-description {{version1}} \
  --launch-template-data file://config.json
```

`config.json` 的内容：

```
{ 
    "ImageId":"resolve:ssm:{{arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter}}",
    "InstanceType":"{{t2.micro}}"
}
```

如果未指定，则参数的默认版本为最新版本。

以下示例引用 `{{MyParameter}}` 参数的特定版本。该示例使用 `{{MyParameter}}` 参数的版本 {{`3`}}，但您可以使用任何有效的版本号。

```
{ 
    "ImageId":"resolve:ssm:{{arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:3}}",
    "InstanceType":"{{t2.micro}}"
}
```

以下类似示例引用了映射到 `{{MyParameter}}` 参数特定版本的参数标签 {{`prod`}}。

```
{ 
    "ImageId":"resolve:ssm:{{arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:prod}}",
    "InstanceType":"{{t2.micro}}"
}
```

以下为响应示例。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-00f93d4588example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2024-01-08T12:43:21.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

------

要在启动模板中指定来自 Parameter Store 的参数，您必须拥有指定参数的 `ssm:GetParameters` 权限。使用启动模板的任何人也需要 `ssm:GetParameters` 权限才能验证参数值。有关更多信息，请参阅《Amazon Systems Manager 用户指南》中的[使用 IAM 策略限制对 Systems Manager 参数的访问](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-paramstore-access.html)**。

## 验证启动模板是否获得正确的 AMI ID
<a name="using-systems-manager-parameters-verify-launch-template"></a>

使用[describe-launch-template-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-launch-template-versions.html)命令并添加将参数解析为实际的 AMI ID 的`--resolve-alias`选项。

```
aws ec2 describe-launch-template-versions --launch-template-name {{my-template-for-auto-scaling}} \
   --versions {{1}} --resolve-alias
```

该示例返回 `ImageId` 的 AMI ID。使用此启动模板启动实例时，AMI ID 解析为 `ami-0ac394d6a3example`。

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-089c023a30example",
            "LaunchTemplateName": "my-template-for-auto-scaling",
            "VersionNumber": 1,
            "CreateTime": "2022-12-28T19:52:27.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0ac394d6a3example",
                "InstanceType": "t2.micro",
            }
        }
    ]
}
```

## 相关资源
<a name="using-systems-manager-parameters-related-resources"></a>

有关在启动模板中指定 Systems Manager 参数的更多详细信息，请参阅《Amazon EC2 用户指南》**中的[使用 Systems Manager 参数而非 AMI ID](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id)。

有关使用 Systems Manager 参数的更多信息，请参阅 Systems Manager 文档中的以下参考资料。
+ 要创建参数版本和标签，请参阅[使用参数版本](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-paramstore-versions.html)和[使用参数标签](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-paramstore-labels.html)。
+ 有关如何查找 Amazon EC2 支持的 AMI 公有参数的信息，请参阅 [Calling AMI public parameters](https://docs.amazonaws.cn/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)。
+ 有关与其他 Amazon 账户或通过其他账户共享参数的信息 Amazon Organizations，请参阅[使用共享参数](https://docs.amazonaws.cn/systems-manager/latest/userguide/parameter-store-shared-parameters.html)。
+ 有关监控参数是否成功创建的信息，请参阅 [Amazon 系统映像的原生参数支持 IDs](https://docs.amazonaws.cn/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)。

## 限制
<a name="using-systems-manager-parameters-limitations"></a>

使用 Systems Manager 参数时，请注意以下限制：
+ Amazon EC2 Auto Scaling 仅支持将 AMI 指定 IDs 为参数。
+ 不支持使用指定 Systems Manager 参数的启动模板创建或更新具有[基于属性的实例类型选择](create-mixed-instances-group-attribute-based-instance-type-selection.md)的[混合实例组](ec2-auto-scaling-mixed-instances-groups.md)。
+ 如果您的自动扩缩组使用指定 Systems Manager 参数的启动模板，则您将无法使用所需的配置或使用跳过匹配开始实例刷新。
+ 如果自动扩缩组使用指定了 Systems Manager 参数的启动模板，则不支持暖池。
+ 每次调用创建或更新自动扩缩组时，Amazon EC2 Auto Scaling 都会解析启动模板中的 Systems Manager 参数。如果您使用的是高级参数或更高的吞吐量限制，则频繁调用 Parameter Store（即 `GetParameters` 操作）可能会增加 Systems Manager 的成本，因为每次 Parameter Store API 交互都会产生费用。有关更多信息，请参阅[Amazon Systems Manager 定价](https://www.amazonaws.cn/systems-manager/pricing/)。