创建和管理启动模板的示例Amazon Command Line Interface(Amazon CLI) - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建和管理启动模板的示例Amazon Command Line Interface(Amazon CLI)

您可以通过Amazon Web Services Management Console、Amazon CLI或软件开发工具包。本部分展示了有关创建和管理 Amazon EC2 自动扩展启动模板的示例,该模板通过Amazon CLI.

创建简单启动模板

要创建简单的启动模板,请使用create-launch-template命令,并进行这些修改:

  • Replaceami-04d5cc9b88example替换为从中启动实例的 AMI 的 ID。

  • Replacet2.micro与您指定的 AMI 兼容的实例类型。

  • Replacesg-903004f88example与 Auto Scaling 组将实例启动到其中的 VPC 的安全组。

此示例创建一个名称为适用于 Auto Scaling 的 my-template. 如果在默认 VPC 中启动由此启动模板创建的实例,则默认情况下它们会收到一个公有 IP 地址。如果在非默认 VPC 中启动实例,则默认情况下它们不会收到一个公有 IP 地址。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro","SecurityGroupIds":["sg-903004f88example"]}'

有关引用 JSON 格式的参数的更多信息,请参阅在 中将引号和字符串结合使用Amazon CLI中的Amazon Command Line Interface用户指南.

或者,您可以在配置文件中指定 JSON 格式的参数。

以下示例创建一个简单的启动模板,引用启动模板参数值的配置文件。

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":"ami-04d5cc9b88example", "InstanceType":"t2.micro", "SecurityGroupIds":["sg-903004f88example"] }

指定在创建时标记实例的标签

下面的示例添加了一个标签(例如,purpose=webserver)到启动时的实例。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro","SecurityGroupIds":["sg-903004f88example"],"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}]}'

指定现有网络接口

以下示例将主要网络接口配置为使用现有网络接口。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"NetworkInterfaceId":"eni-b9a5ac93","DeleteOnTermination":false}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

分配公有 IP 地址

以下create-launch-template示例配置了启动模板,将公有地址分配给在非默认 VPC 中启动的实例。请注意,当您指定网络接口时,请为Groups对应于 Auto Scaling 组将实例启动到其中的 VPC 的安全组,但将 VPC 子网指定为 Auto Scaling 组的属性。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

添加辅助网络接口

以下create-launch-template示例添加辅助网络接口。主要网络接口的设备索引为 0,并且辅助网络接口的设备索引为 1。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f88example"],"DeleteOnTermination":true},{"DeviceIndex":1,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
注意

将来自同一子网的多个网络接口附加到一个实例可能会引入非对称路由,尤其是在使用非 Amazon Linux 变体的实例上。如果需要此类配置,则必须在操作系统中配置辅助网络接口。有关示例,请参阅 。如何使辅助网络接口在我的 Ubuntu EC2 实例中工作?中的Amazon。

创建多个启用 EFA 的网络接口

如果您使用支持多个网卡和弹性结构适配器 (EFA) 的实例类型,则可以向辅助网卡添加辅助接口,并使用以下create-launch-template命令。有关更多信息,请参阅 。将 EFA 添加到启动模板中的适用于 Linux 实例的 Amazon EC2 用户指南.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-09d95fab7fexample","InstanceType":"p4d.24xlarge","NetworkInterfaces":[{"NetworkCardIndex":0,"DeviceIndex":0,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true},{"NetworkCardIndex":1,"DeviceIndex":1,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true}]}'
警告

p4d.24xlarge 实例类型产生的成本高于本节中的其他示例。有关 P4d 实例定价的更多信息,请参阅Amazon EC2 P4d 实例定价.

指定块储存设备映射

以下create-launch-template示例创建了具有块设备映射的启动模板:映射到 /dev/xvdcs 的 22 GB EBS 卷。/dev/xvdcz 卷使用通用型 SSD (gp2) 卷类型,在它连接的实例终止时会被删除。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro","SecurityGroupIds":["sg-903004f88example"],"BlockDeviceMappings":[{"DeviceName":"/dev/xvdcz","Ebs":{"VolumeSize":22,"VolumeType":"gp2","DeleteOnTermination":true}}]}'

管理启动模板

这些区域有:Amazon CLI包括其他几个可帮助您管理启动模板的命令。

列出并描述您的启动模板

您可以使用两个Amazon CLI命令获取启动模板的相关信息:描述启动模板描述启动模板版本.

这些区域有:描述启动模板命令使您可以获取已创建的任意启动模板的列表。您可以使用选项筛选启动模板名称、创建时间、标签键或标签键/值组合的结果。此命令可返回有关任何启动模板的汇总信息,包括启动模板标识符、最新版本和默认版本。

以下示例提供指定启动模板的摘要。

aws ec2 describe-launch-templates --launch-template-names my-template-for-auto-scaling

以下为响应示例。

{ "LaunchTemplates": [ { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2020-02-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } ] }

如果您未使用--launch-template-names选项将输出限制为一个启动模板,则会返回有关所有启动模板的信息。

以下描述启动模板版本命令提供描述指定启动模板版本的信息适用于 Auto Scaling 的 my-template.

aws ec2 describe-launch-template-versions --launch-template-id lt-068f72b729example

以下为响应示例。

{ "LaunchTemplateVersions": [ { "VersionDescription": "version1", "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "VersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "LaunchTemplateData": { "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "purpose", "Value": "webserver" } ] } ], "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "DeviceIndex": 0, "DeleteOnTermination": true, "Groups": [ "sg-903004f88example" ], "AssociatePublicIpAddress": true } ] }, "DefaultVersion": true, "CreateTime": "2020-02-28T19:52:27.000Z" } ] }

创建启动模板版本

以下create-launch-template-version命令根据启动模板的版本 1 创建新的启动模板版本并指定其他 AMI ID。

aws ec2 create-launch-template-version --launch-template-id lt-068f72b729example --version-description version2 \ --source-version 1 --launch-template-data '{"ImageId":"ami-c998b6b2example"}'

要设置启动模板的默认版本,请使用launch-template命令。

删除启动模板版本

以下删除启动模板版本命令删除指定启动模板版本。

aws ec2 delete-launch-template-versions --launch-template-id lt-068f72b729example --versions 1

删除启动模板

如果您不再需要某个启动模板,则可以使用以下删除 launch-template命令。如果删除启动模板,则会删除该模板的所有版本。

aws ec2 delete-launch-template --launch-template-id lt-068f72b729example

更新 Auto Scaling 组以使用启动模板

您可以使用update-auto-scaling-group命令将启动模板添加到现有 Auto Scaling 组。

注意

如果您将 Auto Scaling 组切换为使用启动配置,请确保您的权限是最新的。要使用启动模板,您需要特定的权限。有关更多信息,请参阅 启动模板支持

更新 Auto Scaling 组以使用最新版本的启动模板

以下update-auto-scaling-group命令会更新指定的 Auto Scaling 组以使用指定启动模板的最新版本。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateId=lt-068f72b729example,Version='$Latest'

更新 Auto Scaling 组以使用特定版本的启动模板

以下update-auto-scaling-group命令可更新指定的 Auto Scaling 组以使用指定启动模板的特定版本。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-template-for-auto-scaling,Version='2'