AMIIDs在启动模板中使用 AWS Systems Manager 参数而不是使用参数 - Amazon A EC2 uto Scaling

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

AMIIDs在启动模板中使用 AWS Systems Manager 参数而不是使用参数

本节介绍如何创建启动模板,该模板指定引用 Amazon 系统映像 (AMI) ID 的 AWS Systems Manager 参数。您可以使用存储在您的同一个参数中的参数 AWS 账户、从另一个共享的参数 AWS 账户,或者将公共参数用于由AMI维护的公共参数 AWS。

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

您可以使用参数存储器创建、更新或删除自己的 Systems Manager 参数,该功能为 AWS Systems Manager。必须先创建 Systems Manager 参数,然后才能在启动模板中使用该参数。首先,使用数据类型创建一个参数aws:ec2:image,然后为其值输入的 ID AMI。例如,AMIID 的形式ami-<identifier>ami-123example456。正确的 AMI ID 取决于实例类型以及 AWS 区域 您在其中启动 Auto Scaling 组的实例。

有关为 AMI ID 创建有效参数的更多信息,请参阅创建 Systems Manager 参数

创建用于指定参数的启动模板 AMI

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

Console
使用 AWS Systems Manager 参数创建启动模板
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择启动模板,然后选择创建启动模板

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

  4. 在 “应用程序和操作系统映像(Amazon 系统映像)” 下,选择 “浏览更多” AMIs。

  5. 选择搜索栏右侧的箭头按钮,然后选择指定自定义值/Systems Manager 参数

  6. 指定自定义值或 Systems Manager 参数对话框中,执行以下操作:

    1. 对于 AMIID 或 Systems Manager 参数字符串,请使用以下格式之一输入 Systems Manager 参数名称:

      要引用公有参数,请执行以下操作:

      • resolve:ssm:public-parameter

      要引用存储在同一账户中的参数,请执行以下操作:

      • resolve:ssm:parameter-name

      • resolve:ssm:parameter-name:version-number

      • resolve:ssm:parameter-name:label

      要引用其他 AWS 账户共享的参数,请执行以下操作:

      • resolve:ssm:parameter-ARN

      • resolve:ssm:parameter-ARN:version-number

      • resolve:ssm:parameter-ARN:label

    2. 选择保存

  7. 根据需要配置任何其他启动模板设置,然后选择创建启动模板。有关更多信息,请参阅 为 Auto Scaling 组创建启动模板

AWS CLI

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

示例:创建一个启动模板,该模板指定了 AWS拥有的公共参数

请使用以下语法:resolve:ssm:public-parameter,其中 resolve:ssm 是标准前缀,public-parameter 是公有参数的路径和名称。

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

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 参数名称。

以下示例创建了一个启动模板,该模板从名为的现有 Systems Manager 参数中获取 AMI ID golden-ami

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 参数。该示例使用版本 3golden-ami 参数,但您可以使用任何有效的版本号。

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

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

{ "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 } }
示例:创建一个启动模板,该模板指定了与另一个共享的参数 AWS 账户

使用以下语法:resolve:ssm:parameter-ARN,其中resolve:ssm是标准前缀,是 System parameter-ARN s Manager 参数的前缀。ARN

以下示例创建了一个启动模板,该模板从现有 Systems Manager 参数中获取 AMI ID,ARN其值为为arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter

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 参数的特定版本。该示例使用版本 3MyParameter参数,但你可以使用任何有效的版本号。

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

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

{ "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权限才能验证参数值。有关更多信息,请参阅《AWS Systems Manager 用户指南》中的使用IAM策略限制对 Systems Manager 参数的访问

验证启动模板获得正确的 AMI ID

使用describe-launch-template-versions命令并包含将参数解析为实际 AMI ID 的--resolve-alias选项。

aws ec2 describe-launch-template-versions --launch-template-name my-template-for-auto-scaling \ --versions $Default --resolve-alias

该示例返回的 AMI ID ImageId。使用此启动模板启动实例时,AMIID 将解析为。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", } } ] }

有关在启动模板中指定 Systems Manag er 参数的更多详情,请参阅亚马逊EC2用户指南中的使用系统管理器参数代替 AMI ID

有关使用 Systems Manager 参数的更多信息,请参阅 Systems Manager 文档中的以下参考资料。

限制

使用 Systems Manager 参数时,请注意以下限制:

  • Amazon A EC2 uto Scaling 仅支持指定AMIIDs为参数。

  • 支持使用指定 Sy stems Manager 参数的启动模板创建或更新具有基于属性的实例类型选择的混合实例组

  • 如果您的 Auto Scaling 组使用的启动模板指定 Systems Manager 参数,则您将无法使用所需的配置或使用跳过匹配来启动实例刷新。

  • 每次调用创建或更新您的 Auto Scaling 群组时,Amazon A EC2 uto Scaling 都会解析启动模板中的 Systems Manager 参数。如果您使用的是高级参数或更高的吞吐量限制,则频繁调用 Parameter Store(即GetParameters操作)可能会增加 Systems Manager 的成本,因为每次参数存储API交互都会产生费用。有关更多信息,请参阅 AWS Systems Manager 定价