Amazon EC2 시작 템플릿(launch template) 만들기
Amazon EC2 시작 템플릿(launch template) 만들기
Amazon EC2 시작 템플릿은 인스턴스 구성 파라미터에 직접 값을 지정하거나, 기존 시작 템플릿이나 Amazon EC2 인스턴스에서 값을 가져와 만들 수 있어요. 시작 템플릿에서 모든 파라미터에 값을 지정해야 하는 건 아니고, 시작 템플릿을 만들기 위해서는 인스턴스 구성 파라미터 하나만 지정하면 됩니다. 지정하지 않기로 선택한 파라미터는 콘솔에서는 Don't include in launch template을 선택하고, 명령줄 도구에서는 해당 파라미터를 포함하지 않으면 돼요.
출처: 문서
본문
시작 템플릿에 AMI를 지정하고 싶다면 AMI를 선택하거나, 인스턴스 시작 시 AMI를 가리키는 Systems Manager 파라미터를 지정할 수 있어요.
시작 템플릿으로 인스턴스를 시작하면 템플릿에 지정된 값으로 해당 인스턴스 파라미터가 구성됩니다. 템플릿에 값이 지정되지 않으면 해당 인스턴스 파라미터의 기본값이 사용돼요.
이 문서는 다음 작업을 다룹니다.
- 파라미터를 지정해 시작 템플릿 만들기
- 기존 시작 템플릿에서 시작 템플릿 만들기
- 인스턴스에서 시작 템플릿 만들기
- AMI ID 대신 Systems Manager 파라미터 사용하기
파라미터를 지정해 시작 템플릿 만들기
시작 템플릿을 만들려면 템플릿 이름과 최소한 하나의 인스턴스 구성 파라미터를 지정해야 해요. 각 파라미터에 대한 설명은 "Amazon EC2 인스턴스 구성 파라미터 참조"를 참고하세요.
콘솔
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Launch Templates를 선택하고 Create launch template을 선택합니다.
- Launch template name and description에서 다음을 수행합니다.
- Launch template name에 시작 템플릿의 설명적인 이름을 입력합니다.
- Template version description에 이 템플릿 버전에 대한 간단한 설명을 입력합니다.
- 생성 시 시작 템플릿을 태그하려면 Template tags를 확장하고 Add new tag를 선택해 태그 키·값 쌍을 입력합니다. 추가 태그마다 Add new tag를 다시 선택합니다.
참고 — 인스턴스가 시작될 때 생성되는 리소스를 태그하려면 Resource tags 아래에 태그를 지정해야 해요. 자세한 내용은 이 절차의 9단계를 참고하세요.
- **Application and OS Images (Amazon Machine Image)**에서 Don't include in launch template을 유지하거나, 인스턴스의 운영 체제(OS)를 선택한 뒤 AMI를 선택합니다. 또는 AMI를 지정하는 대신 Systems Manager 파라미터를 지정할 수도 있어요. AMI는 인스턴스 시작에 필요한 운영 체제와 소프트웨어를 포함하는 템플릿입니다.
- Instance type에서 Don't include in launch template을 유지하거나, 인스턴스 유형을 선택하거나, 인스턴스 속성을 지정해 Amazon EC2가 해당 속성의 인스턴스 유형을 식별하게 할 수 있어요.
참고 — 인스턴스 속성 지정은 시작 템플릿이 Auto Scaling 그룹, EC2 Fleet, Spot Fleet이 인스턴스를 시작할 때만 지원됩니다. Launch Instance 마법사나 RunInstances API에서 템플릿을 사용하려면 인스턴스 유형 속성을 지정할 수 없어요. 인스턴스 유형은 인스턴스의 하드웨어 구성(CPU, 메모리, 스토리지, 네트워킹 용량)과 호스트 컴퓨터의 크기를 결정합니다. 어떤 유형을 고를지 모르겠다면:
- Compare instance types를 선택해 vCPU 수, 아키텍처, 메모리(GiB), 스토리지(GB), 스토리지 유형, 네트워크 성능으로 비교합니다.
- Get advice를 선택해 EC2 instance type finder가 제공하는 지침과 제안을 받습니다.
참고 — 계정 생성 시점에 따라 Free Tier로 Amazon EC2를 사용할 자격이 있을 수 있어요. 2025년 7월 15일 이전에 계정을 만들었고 12개월 미만이라면
t2.micro(또는 t2.micro가 없는 리전의t3.micro)를 선택해 Free Tier로 사용할 수 있어요. 단, t3.micro를 시작하면 CPU 사용량에 따라 추가 요금이 발생할 수 있는 Unlimited 모드가 기본 적용됩니다. Free Tier로 사용 가능한 인스턴스 유형은 Free tier eligible로 표시됩니다. 2025년 7월 15일 이후에 계정을 만들었다면t3.micro,t3.small,t4g.micro,t4g.small,c7i-flex.large,m7i-flex.large유형을 6개월 또는 크레딧이 소진될 때까지 사용할 수 있어요. - **Key pair (login)**의 Key pair name에서 Don't include in launch template을 유지하거나 기존 키 페어를 선택하거나 새 키 페어를 만듭니다.
- Network settings에서 Dont include in launch template을 유지하거나 다양한 네트워크 설정 값을 지정합니다.
- Configure storage에서 템플릿에 AMI를 지정했다면 AMI에 루트 볼륨(Volume 1 (AMI Root))을 포함한 하나 이상의 스토리지 볼륨이 포함되어 있어요. 선택적으로 인스턴스에 연결할 추가 볼륨을 지정할 수 있으며, Add new volume으로 새 볼륨을 추가합니다.
- Resource tags에서 인스턴스가 시작될 때 생성되는 리소스를 태그하려면 Add tag를 선택해 태그 키·값 쌍을 입력합니다. Resource types에서 생성 시 태그할 리소스를 지정합니다. 모든 리소스에 같은 태그를 지정하거나 리소스마다 다른 태그를 지정할 수 있어요. 시작 템플릿을 사용할 때 생성되는 다음 리소스에 태그를 지정할 수 있습니다: 인스턴스, 볼륨, Elastic Graphics, Spot Instance 요청, 네트워크 인터페이스.
참고 — 시작 템플릿 자체를 태그하려면 Template tags 아래에 태그를 지정해야 해요.
- Advanced details를 확장해 필드를 보고 선택적으로 추가 파라미터를 지정합니다.
- Summary 패널로 시작 템플릿 구성을 검토합니다. 각 섹션 링크를 선택해 이동하고 필요한 변경을 할 수 있어요.
- 준비가 되면 Create launch template을 선택합니다.
AWS CLI
create-launch-template 명령을 사용합니다.
aws ec2 create-launch-template \
--launch-template-name TemplateForWebServer \
--version-description WebVersion1 \
--tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \
--launch-template-data file://template-data.json
인스턴스 구성에 대한 시작 템플릿 데이터를 지정하는 예시 JSON입니다. 예제 명령처럼 JSON을 파일에 저장하고 --launch-template-data 파라미터에 포함하세요.
{
"NetworkInterfaces": [{
"AssociatePublicIpAddress": true,
"DeviceIndex": 0,
"Ipv6AddressCount": 1,
"SubnetId": "subnet-0abcdef1234567890"
}],
"ImageId": "ami-0abcdef1234567890",
"InstanceType": "r5.4xlarge",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name",
"Value":"webserver"
}]
}],
"CpuOptions": {
"CoreCount":4,
"ThreadsPerCore":2
}
}
예시 출력:
{
"LaunchTemplate": {
"LatestVersionNumber": 1,
"LaunchTemplateId": "lt-01238c059e3466abc",
"LaunchTemplateName": "TemplateForWebServer",
"DefaultVersionNumber": 1,
"CreatedBy": "arn:aws:iam::123456789012:root",
"CreateTime": "2017-11-27T09:13:24.000Z"
}
}
PowerShell
New-EC2LaunchTemplate cmdlet을 사용합니다.
$launchTemplateData = [Amazon.EC2.Model.RequestLaunchTemplateData]@{
ImageId = 'ami-0abcdef1234567890'
InstanceType = 'r5.4xlarge'
NetworkInterfaces = @(
[Amazon.EC2.Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]@{
AssociatePublicIpAddress = $true
DeviceIndex = 0
Ipv6AddressCount = 1
SubnetId = 'subnet-0abcdef1234567890'
}
)
TagSpecifications = @(
[Amazon.EC2.Model.LaunchTemplateTagSpecificationRequest]@{
ResourceType = 'instance'
Tags = [Amazon.EC2.Model.Tag]@{
Key = 'Name'
Value = 'webserver'
}
}
)
CpuOptions = [Amazon.EC2.Model.LaunchTemplateCpuOptionsRequest]@{
CoreCount = 4
ThreadsPerCore = 2
}
}
$tagSpecificationData = [Amazon.EC2.Model.TagSpecification]@{
ResourceType = 'launch-template'
Tags = [Amazon.EC2.Model.Tag]@{
Key = 'purpose'
Value = 'production'
}
}
New-EC2LaunchTemplate -LaunchTemplateName 'TemplateForWebServer' `
-VersionDescription 'WebVersion1' `
-LaunchTemplateData $launchTemplateData `
-TagSpecification $tagSpecificationData
예시 출력:
CreatedBy : arn:aws:iam::123456789012:root
CreateTime : 9/19/2023 16:57:55
DefaultVersionNumber : 1
LatestVersionNumber : 1
LaunchTemplateId : lt-01238c059eEXAMPLE
LaunchTemplateName : TemplateForWebServer
Tags : {purpose}
기존 시작 템플릿에서 시작 템플릿 만들기
기존 시작 템플릿을 복제(clone)하고 파라미터를 조정해 새 시작 템플릿을 만들 수 있어요. 단, 이 기능은 Amazon EC2 콘솔에서만 가능하며 AWS CLI는 템플릿 복제를 지원하지 않아요.
콘솔
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Launch Templates → Create launch template을 선택합니다.
- Launch template name에 설명적인 이름을 입력합니다.
- Template version description에 간단한 설명을 입력합니다.
- 생성 시 태그하려면 Template tags를 확장하고 Add new tag를 선택해 태그를 입력합니다.
- Source template을 확장하고 Launch template name에서 새 템플릿의 기반이 될 시작 템플릿을 선택합니다.
- Source template version에서 새 템플릿의 기반이 될 버전을 선택합니다.
- 필요에 따라 시작 파라미터를 조정하고 Create launch template을 선택합니다.
인스턴스에서 시작 템플릿 만들기
기존 Amazon EC2 인스턴스의 파라미터를 복제하고 조정해 시작 템플릿을 만들 수 있어요.
콘솔
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Instances를 선택합니다.
- 인스턴스를 선택하고 Actions → Image and templates → Create template from instance를 선택합니다.
- 이름, 설명, 태그를 입력하고 필요에 따라 시작 파라미터를 조정합니다.
참고 — 인스턴스에서 시작 템플릿을 만들 때 인스턴스의 네트워크 인터페이스 ID와 IP 주소는 템플릿에 포함되지 않아요.
- Create launch template을 선택합니다.
AWS CLI
먼저 인스턴스에서 시작 템플릿 데이터를 가져온 뒤, 그 데이터로 시작 템플릿을 만들 수 있어요. 인스턴스에서 시작 템플릿 데이터를 가져오려면 get-launch-template-data 명령을 사용하고 인스턴스 ID를 지정합니다. 출력은 새 시작 템플릿이나 시작 템플릿 버전을 만드는 기반으로 사용할 수 있어요. 기본적으로 출력에는 시작 템플릿 데이터에 지정할 수 없는 최상위 LaunchTemplateData 객체가 포함되므로, --query 옵션으로 이 객체를 제외합니다.
aws ec2 get-launch-template-data \
--instance-id i-0123d646e8048babc \
--query "LaunchTemplateData"
예시 출력:
{
"Monitoring": {},
"ImageId": "ami-8c1be5f6",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"DeleteOnTermination": true
}
}
],
"EbsOptimized": false,
"Placement": {
"Tenancy": "default",
"GroupName": "",
"AvailabilityZone": "us-east-1a"
},
"InstanceType": "t2.micro",
"NetworkInterfaces": [
{
"Description": "",
"NetworkInterfaceId": "eni-35306abc",
"PrivateIpAddresses": [
{
"Primary": true,
"PrivateIpAddress": "10.0.0.72"
}
],
"SubnetId": "subnet-7b16de0c",
"Groups": [
"sg-7c227019"
],
"Ipv6Addresses": [
{
"Ipv6Address": "2001:db8:1234:1a00::123"
}
],
"PrivateIpAddress": "10.0.0.72"
}
]
}
출력을 파일로 직접 쓸 수도 있어요. 예를 들어:
aws ec2 get-launch-template-data \
--instance-id i-0123d646e8048babc \
--query "LaunchTemplateData" >> instance-data.json
그런 다음 create-launch-template 명령으로 앞 절차의 출력을 사용해 시작 템플릿을 만듭니다.
AMI ID 대신 Systems Manager 파라미터 사용하기
시작 템플릿에 AMI ID를 지정하는 대신 AWS Systems Manager 파라미터를 지정할 수 있어요. AMI ID가 변경되면 Systems Manager Parameter Store의 파라미터를 한 번만 갱신하면 되고, 파라미터는 다른 AWS 계정과 공유할 수도 있어요. 한 계정에 AMI 파라미터를 중앙에서 저장·관리하고 참조가 필요한 다른 계정과 공유할 수 있습니다. Systems Manager 파라미터를 사용하면 모든 시작 템플릿을 한 번의 작업으로 갱신할 수 있어요.
Systems Manager 파라미터는 AWS Systems Manager Parameter Store에서 만드는 사용자 정의 키-값 쌍입니다. Parameter Store는 애플리케이션 구성 값을 저장하는 중앙 위치를 제공합니다.
예를 들어 golden-ami 파라미터가 Parameter Store에서 원래 AMI ami-aabbccddeeffgghhi에 매핑되어 있고, 시작 템플릿의 AMI ID 값이 golden-ami라면, 이 템플릿으로 인스턴스를 시작할 때 AMI ID가 ami-aabbccddeeffgghhi로 해석됩니다. 나중에 AMI가 갱신되어 새 AMI ID가 생기면 Parameter Store에서 golden-ami 파라미터를 새 ami-00112233445566778에 매핑합니다. 시작 템플릿은 그대로이고, 인스턴스를 시작하면 AMI ID가 새 ami-00112233445566778로 해석됩니다.
AMI ID용 Systems Manager 파라미터 형식
시작 템플릿은 사용자 정의 Systems Manager 파라미터가 AMI ID 대신 사용될 때 다음 형식을 따르도록 요구합니다.
- 파라미터 유형: String
- 파라미터 데이터 유형:
aws:ec2:image— 이는 Parameter Store가 입력한 값이 AMI ID에 적합한 형식인지 검증하도록 보장합니다.
유효한 AMI ID 파라미터 생성에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 "Systems Manager 파라미터 생성"을 참고하세요.
시작 템플릿에서 Systems Manager 파라미터 형식
시작 템플릿에서 AMI ID 대신 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
파라미터 버전 — Systems Manager 파라미터는 버전이 있는(versioned) 리소스예요. 파라미터를 갱신하면 새 버전이 연속적으로 생깁니다. Systems Manager는 파라미터의 특정 버전에 매핑할 수 있는 파라미터 레이블을 지원해요. 예를 들어 golden-ami 파라미터에 버전 1, 2, 3이 있을 수 있고, 버전 2에 매핑되는 레이블 beta, 버전 3에 매핑되는 레이블 prod를 만들 수 있어요. 시작 템플릿에서 golden-ami 파라미터의 버전 3을 다음 형식 중 하나로 지정할 수 있어요.
resolve:ssm:golden-ami:3
resolve:ssm:golden-ami:prod
버전이나 레이블 지정은 선택 사항이며, 지정하지 않으면 파라미터의 최신 버전이 사용됩니다.
시작 템플릿에 Systems Manager 파라미터 지정하기
시작 템플릿이나 새 시작 템플릿 버전을 만들 때 AMI ID 대신 Systems Manager 파라미터를 지정할 수 있어요.
콘솔
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Launch Templates → Create launch template을 선택합니다.
- Launch template name에 설명적인 이름을 입력합니다.
- **Application and OS Images (Amazon Machine Image)**에서 Browse more AMIs를 선택합니다.
- 검색 창 오른쪽의 화살표 버튼을 선택하고 Specify custom value/Systems Manager parameter를 선택합니다.
- Specify custom value or Systems Manager parameter 대화 상자에서 AMI ID or Systems Manager parameter string에 위 형식 중 하나로 Systems Manager 파라미터 이름을 입력합니다.
- Save를 선택합니다.
- 다른 시작 템플릿 파라미터를 필요에 따라 지정하고 Create launch template을 선택합니다.
AWS CLI
create-launch-template 명령으로 시작 템플릿을 만듭니다. 사용할 AMI를 지정하려면 위 형식 중 하나로 Systems Manager 파라미터 이름을 입력합니다. 다음 예제는 시작 템플릿 이름(TemplateForWebServer), 템플릿 태그(purpose = production), JSON 파일에 지정된 인스턴스 구성 데이터, 사용할 AMI(resolve:ssm: golden-ami), 시작할 인스턴스 유형(m5.4xlarge), 인스턴스 태그(Name = webserver)를 지정해 시작 템플릿을 만듭니다.
aws ec2 create-launch-template \
--launch-template-name TemplateForWebServer \
--tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \
--launch-template-data file://template-data.json
인스턴스 구성에 대한 시작 템플릿 데이터를 담은 예시 JSON 파일입니다. ImageId 값은 필수 형식 resolve:ssm: golden-ami로 입력된 Systems Manager 파라미터 이름이에요.
{"LaunchTemplateData": {
"ImageId": "resolve:ssm:golden-ami",
"InstanceType": "m5.4xlarge",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name",
"Value":"webserver"
}]
}]
}
}
시작 템플릿이 올바른 AMI ID를 받는지 확인하기
Systems Manager 파라미터를 실제 AMI ID로 해석하려면 --resolve-alias 파라미터와 함께 describe-launch-template-versions 명령을 사용합니다.
aws ec2 describe-launch-template-versions \
--launch-template-name my-launch-template \
--versions $Default \
--resolve-alias
응답에 ImageId의 AMI ID가 포함됩니다. 이 예제에서 이 시작 템플릿으로 인스턴스를 시작하면 AMI ID가 ami-0ac394d6a3example로 해석돼요.
{
"LaunchTemplateVersions": [
{
"LaunchTemplateId": "lt-089c023a30example",
"LaunchTemplateName": "my-launch-template",
"VersionNumber": 1,
"CreateTime": "2022-12-28T19:52:27.000Z",
"CreatedBy": "arn:aws:iam::123456789012:user/Bob",
"DefaultVersion": true,
"LaunchTemplateData": {
"ImageId": "ami-0ac394d6a3example",
"InstanceType": "t3.micro",
}
}
]
}
관련 리소스
- Amazon EC2가 지원하는 AMI 공개 파라미터를 조회하는 방법: "Calling AMI public parameters"
- 파라미터를 다른 AWS 계정이나 AWS Organizations와 공유: "Working with shared parameters"
- 파라미터가 성공적으로 생성됐는지 모니터링: "Native parameter support for Amazon Machine Image IDs"
제한 사항
- AMI ID 대신 Systems Manager 파라미터가 지정된 시작 템플릿을 사용할 수 있는 EC2 Fleet은 type이
instant인 경우에만 가능해요. - type이
maintain과request인 EC2 Fleets 및 Spot Fleets는 AMI ID 대신 Systems Manager 파라미터를 지원하지 않아요. 이 경우 시작 템플릿에 AMI를 지정한다면 AMI ID를 반드시 지정해야 합니다. - EC2 Fleet에서 속성 기반 인스턴스 선택(attribute-based instance selection)을 사용하면 AMI ID 대신 Systems Manager 파라미터를 지정할 수 없어요. 속성 기반 선택을 사용할 때는 AMI ID를 지정해야 합니다.
- Amazon EC2 Auto Scaling에는 다른 제한이 있을 수 있어요. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서의 "시작 템플릿에서 AMI ID 대신 AWS Systems Manager 파라미터 사용"을 참고하세요.