使用 Amazon CLI 创建和管理启动模板的示例
您可以通过 Amazon Web Services 管理控制台、Amazon Command Line Interface(Amazon CLI)或 SDK 创建和管理启动模板。本节显示了从 Amazon CLI 为 Amazon EC2 Auto Scaling 创建和管理启动模板的实例。
目录
示例用法
{ "LaunchTemplateName": "my-template-for-auto-scaling", "VersionDescription": "test description", "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "Monitoring": { "Enabled": true }, "Placement": { "Tenancy": "dedicated" }, "CreditSpecification": { "CpuCredits": "unlimited" }, "MetadataOptions": { "HttpTokens": "required", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled" } } }
创建基本的启动模板
要创建基本的启动模板,请使用以下 create-launch-template
-
将
ami-04d5cc9b88example替换为要从其中启动实例的 AMI 的 ID。 -
将
t2.micro替换为与指定的 AMI 兼容的实例类型。
此示例创建了名为 my-template-for-auto-scaling 的启动模板。如果在默认 VPC 中启动由此启动模板创建的实例,则默认情况下它们会收到一个公有 IP 地址。如果在非默认 VPC 中启动实例,则默认情况下它们不会收到一个公有 IP 地址。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
有关引用 JSON 格式参数的更多信息,请参阅 Amazon Command Line Interface 用户指南中的在 Amazon CLI 中将引号和字符串结合使用。
或者,您可以在配置文件中指定 JSON 格式参数。
以下示例创建了基本的启动模板,其中引用了启动模板参数值的配置文件。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data file://config.json
config.json 的内容:
{ "ImageId":"ami-04d5cc9b88example", "InstanceType":"t2.micro" }
指定在启动时标记实例的标签
以下示例在启动时将标签(例如,purpose=webserver)添加到实例。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
注意
如果您在启动模板中指定了实例标签,然后选择将 Auto Scaling 组的标签传播到其实例,则所有标签都会合并。如果为启动模板中的标签和 Auto Scaling 组中的标签指定了相同的标签键,则优先使用该组中的标签值。
指定要传递到实例的 IAM 角色
以下示例指定启动时要传递给实例的与 IAM 角色关联的实例配置文件的名称。有关更多信息,请参阅 在 Amazon EC2 实例上运行的应用程序的 IAM 角色。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"IamInstanceProfile":{"Name":"my-instance-profile"},"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
分配公有 IP 地址
以下 create-launch-template
注意
指定网络接口时,请为 Groups 指定值(对应于 Auto Scaling 组将实例启动到其中的 VPC 的安全组)。指定 VPC 子网作为 Auto Scaling 组的属性。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
指定用于在启动时配置实例的用户数据脚本
以下示例将用户数据脚本指定为 base64 编码的字符串,用于在启动时配置实例。create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"UserData":"IyEvYmluL2Jhc...","ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
指定块储存设备映射
以下 create-launch-template/dev/xvdcz 的 22-gigabyte EBS 卷。/dev/xvdcz 卷使用通用型 SSD (gp2) 卷类型,在它连接的实例终止时会被删除。
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"BlockDeviceMappings":[{"DeviceName":"/dev/xvdcz","Ebs":{"VolumeSize":22,"VolumeType":"gp2","DeleteOnTermination":true}}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
指定专属主机以从外部供应商获得软件许可证
如果您指定主机租赁,您可以指定主机资源组和 License Manager 许可证配置,以便从外部供应商获得合格的软件许可证。然后,您可以通过使用以下 create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"Placement":{"Tenancy":"host","HostResourceGroupArn":"arn"},"LicenseSpecifications":[{"LicenseConfigurationArn":"arn"}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
指定现有网络接口
以下 create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"NetworkInterfaceId":"eni-b9a5ac93","DeleteOnTermination":false}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
创建多个网络接口
以下 create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f88example"],"DeleteOnTermination":true},{"DeviceIndex":1,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
如果您使用支持多个网卡和 Elastic Fabric Adapters (EFA) 的实例类型,则可以向辅助网卡添加辅助接口并使用以下 create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"NetworkCardIndex":0,"DeviceIndex":0,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true},{"NetworkCardIndex":1,"DeviceIndex":1,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true}],"ImageId":"ami-09d95fab7fexample","InstanceType":"p4d.24xlarge"}'
警告
p4d.24xlarge 实例类型产生的成本高于本节中的其他示例。有关 P4d 实例定价的更多信息,请参阅 Amazon EC2 P4d 实例定价
注意
将来自同一子网的多个网络接口附加到一个实例可能会引入非对称路由,尤其是在使用非 Amazon Linux 变体的实例上。如果需要此类配置,则必须在操作系统中配置辅助网络接口。有关示例,请参阅 Amazon 知识中心中的如何在我的 Ubuntu EC2 实例中使用我的辅助网络接口?
管理启动模板
Amazon CLI 包括其他几个可帮助您管理启动模板的命令。
列出并描述启动模板
您可以使用两个 Amazon CLI 命令获取有关启动模板的信息:describe-launch-templates
describe-launch-templates
以下示例提供指定启动模板的汇总。
aws ec2 describe-launch-templates --launch-template-namesmy-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 选项将输出限制为一个启动模板,则将返回所有启动模板的相关信息。
以下 describe-launch-template-versions
aws ec2 describe-launch-template-versions --launch-template-idlt-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
aws ec2 create-launch-template-version --launch-template-idlt-068f72b729example--version-descriptionversion2\ --source-version1--launch-template-data "ImageId=ami-c998b6b2example"
要设置启动模板的默认版本,请使用 modify-launch-template
删除启动模板版本
以下 delete-launch-template-versions
aws ec2 delete-launch-template-versions --launch-template-idlt-068f72b729example--versions 1
删除启动模板
如果不再需要某个启动模板,则可以使用以下 delete-launch-template
aws ec2 delete-launch-template --launch-template-idlt-068f72b729example
更新 Auto Scaling 组以使用启动模板
您可以使用 update-auto-scaling-group
更新 Auto Scaling 组以使用最新版本的启动模板
以下 update-auto-scaling-group
aws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-template LaunchTemplateId=lt-068f72b729example,Version='$Latest'
更新 Auto Scaling 组以使用特定版本的启动模板
以下 update-auto-scaling-group
aws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-template LaunchTemplateName=my-template-for-auto-scaling,Version='2'