Launch Template介绍

创建ASG有两种方式——使用Launch TemplatesLaunch Configurations。它们在EC2页面的位置如下:

image-20221003135105324

但是Launch configurations目前并不是AWS推荐的方式(过时了),所以本章我们只会介绍Launch Template

image-20221003134916974

Launch Template介绍

Launch Template里声明了实例的属性,包括AMI、实例类型、密钥对、安全组等等。

但相比于Launch ConfigurationLaunch Template

  1. 增加了版本控制的特性:基于某个版本可以创建新的版本——例如在v2里要测试新的机器型号,测试完成后再把v2删除掉。
  2. 另外Launch Template支持ASG的所有新特性(比如在ASG里同时启动spot和on-demand机器),Launch Configuration就欠缺这点。

如果现在还用Launch Configuration,AWS极其推荐迁移到Launch Template

创建Launch Template

本节我们将一步步动手,创建好一个Launch Template

在创建launch template时,所有的参数都不是必填的。例如创建Launch Template时缺省了实例类型,在创建ASG时可以再指定

在EC2页面,点击Create Launch Template

image-20221003140823036

命名为MyFirstTemplate,然后选择上Auto Scaling guidance(这将有利于后面创建ASG,如果没钩选这个,则AMI是可选项,此时创建出来的Launch Template创建不了ASG;钩选后,将强制把ASG所有的必选项变成必填):

image-20221003140941809

模板上面可以打标签;也可以选择使用其他模板的属性(例如复用AMI、磁盘等设置),这里留空即可:

image-20221003141014827

选择使用Amazon Linux AMI(这里看到是required,如果没有在上面钩选Auto Scaling guidance,则这里是optional):

image-20221003141049310

选择默认的实例类型。这里先选择t2.micro(在创建ASG时还可以覆盖,使用各种各样的机型):

image-20221003141107622

选择安全组,这里先选择默认VPC下的默认安全组(注意要放开80端口公网访问,后面将进行测试):

image-20221003141223251

设置磁盘属性,使用gp3(默认是gp2):

image-20221003141327422

添加Resource Tag。注意这里的Tag和上面的Template Tag不一样,这里的Tag打在创建出来的资源上,如实例、EBS。

很贴心的一点是可以选择Tag也打在磁盘上,这样创建出来的EC2及其磁盘都具有相同的Tag:

image-20221003141442559

在高级设置部分,里面有很多创建EC2时常见的选项,例如IAM Role、关机行为、是否配置auto-recovery等等。

image-20221003141512698

回到最底部,填写userdata,让EC2创建时也启动一个Web服务:

image-20221003141823572

#!/bin/bash
# Use this for your user data (script without newlines)
# Installs httpd (Linux 2 version)
yum update -y
yum install -y httpd.x86_64
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f) </h1>" > /var/www/html/index.html
echo "healthy" > /var/www/html/health.html

最后点击创建:

image-20221003141834172


创建完成后,看到Launch Template可以用于三种场景:

  1. 直接启动EC2实例
  2. 创建ASG
  3. 创建Spot Fleet

image-20221003141901804