

# Amazon EC2 시작 템플릿 생성
<a name="create-launch-template"></a>

인스턴스 구성 파라미터의 값을 직접 지정하거나 기존 시작 템플릿 또는 Amazon EC2 인스턴스에서 값을 가져와서 Amazon EC2 시작 템플릿을 생성할 수 있습니다.

시작 템플릿의 모든 파라미터에 대해 값을 지정할 필요는 없으며, 인스턴스 구성 파라미터 하나만 지정하면 시작 템플릿을 생성할 수 있습니다. 지정하지 않기로 선택한 파라미터를 표시하려면 콘솔 사용 시 **시작 템플릿에 포함하지 않음**을 선택합니다. 명령줄 도구를 사용할 때는 시작 템플릿에서 파라미터를 지정하지 않기로 선택했음을 나타내는 파라미터를 포함하지 않습니다

시작 템플릿에 AMI를 지정하려면 AMI를 선택하거나 인스턴스 시작 시 AMI를 가리키는 Systems Manager 파라미터를 지정합니다.

시작 템플릿으로 인스턴스이 시작될 때 시작 템플릿에 지정된 값을 사용하여 해당 인스턴스 파라미터가 구성됩니다. 시작 템플릿에 값이 지정되지 않은 경우 해당 인스턴스 파라미터의 기본값이 사용됩니다.

**Topics**
+ [파라미터를 지정하여 시작 템플릿 생성](#create-launch-template-define-parameters)
+ [기존 시작 템플릿에서 시작 템플릿 생성](#create-launch-template-from-existing-launch-template)
+ [인스턴스에서 시작 템플릿 생성](#create-launch-template-from-instance)
+ [AMI ID 대신 Systems Manager 파라미터 사용](#use-an-ssm-parameter-instead-of-an-ami-id)

## 파라미터를 지정하여 시작 템플릿 생성
<a name="create-launch-template-define-parameters"></a>

시작 템플릿을 만들려면 시작 템플릿 이름과 하나 이상의 인스턴스 구성 파라미터를 지정해야 합니다.

파라미터에 대한 설명은 [Amazon EC2 인스턴스 구성 파라미터에 대한 참조](ec2-instance-launch-parameters.md) 섹션을 참조하세요.

------
#### [ Console ]

**시작 템플릿을 생성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **시작 템플릿**을 선택한 다음 **시작 템플릿 생성**을 선택합니다.

1. **시작 템플릿 이름 및 설명**에서 다음을 수행합니다.

   1. **Launch template name**에 대해 시작 템플릿의 설명이 포함된 이름을 입력하세요.

   1. [**템플릿 버전 설명(Template version description)**]에 시작 템플릿의 이 버전에 대한 간단한 설명을 입력합니다.

   1. 생성 시 시작 템플릿에 [태그를 지정](Using_Tags.md)하려면 **템플릿 태그**를 확장하고 **새 태그 추가**를 선택한 다음 태그 키와 값 페어를 입력합니다. 추가할 각 추가 태그에 대해 **새 태그 추가**를 다시 선택합니다.
**참고**  
인스턴스가 시작될 때 생성되는 리소스에 태깅하려면 **리소스 태그(Resource tags)**에서 태깅해야 합니다. 자세한 내용은 이 절차의 9단계를 참조하세요.

1. **애플리케이션 및 OS 이미지(Amazon Machine Image)**에서 **시작 템플릿에 포함하지 않음**을 선택된 상태로 유지하거나 인스턴스의 운영 체제(OS)를 선택한 다음 AMI를 선택할 수 있습니다. 또는 AMI를 지정하는 대신 Systems Manager 파라미터를 지정할 수 있습니다. 자세한 내용은 [AMI ID 대신 Systems Manager 파라미터 사용](#use-an-ssm-parameter-instead-of-an-ami-id) 섹션을 참조하세요.

   AMI는 인스턴스를 시작하는 데 필요한 운영 체제 및 소프트웨어가 포함된 템플릿입니다.

1. **인스턴스 유형**에서 **시작 템플릿에 포함하지 않음**을 선택된 상태로 유지하거나, 인스턴스 유형을 선택하거나, 인스턴스 속성을 지정하여 Amazon EC2가 해당 속성으로 인스턴스 유형을 식별하도록 할 수 있습니다.
**참고**  
인스턴스 속성 지정은 Auto Scaling 그룹, EC2 플릿 및 스팟 플릿에서 인스턴스를 시작하기 위해 시작 템플릿을 사용하는 경우에만 지원됩니다. 자세한 내용은 [속성 기반 인스턴스 유형 선택을 사용하여 혼합 인스턴스 그룹 생성](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) 및 [EC2 플릿 또는 스팟 플릿의 인스턴스 유형 선택에 대한 속성 지정](ec2-fleet-attribute-based-instance-type-selection.md) 섹션을 참조하세요.  
[인스턴스 시작 마법사](ec2-launch-instance-wizard.md) 또는 [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)에서 시작 템플릿을 사용하려는 경우 인스턴스 유형 속성을 지정할 수 없습니다.

   인스턴스 유형은 인스턴스에 사용되는 호스트 컴퓨터의 하드웨어 구성(CPU, 메모리, 스토리지 및 네트워킹 용량) 과 크기를 결정합니다.

   어떤 인스턴스 유형을 선택할지 확실하지 않으면 다음을 수행합니다.
   + **인스턴스 유형 비교**를 선택하여 vCPU 수, 아키텍처, 메모리 양(GiB), 스토리지 양(GB), 스토리지 유형 및 네트워크 성능과 같은 속성을 기준으로 서로 다른 인스턴스 유형을 비교합니다.
   + **조언 받기**를 선택하여 Amazon Q EC2 인스턴스 유형 선택기에서 인스턴스 유형에 대한 지침과 제안을 받습니다. 자세한 내용은 [EC2 인스턴스 유형 파인더에서 권장 사항 받기](get-ec2-instance-type-recommendations.md) 섹션을 참조하세요.
**참고**  
계정을 생성한 시기에 따라 프리 티어에서 Amazon EC2를 사용할 수 있습니다.  
2025년 7월 15일 전에 AWS 계정을 생성했고 생성한 지 12개월 미만인 경우 **t2.micro** 인스턴스 유형 또는 **t3.micro** 인스턴스 유형(**t2.micro**를 사용할 수 없는 리전의 경우)을 선택하여 프리 티어로 Amazon EC2를 사용할 수 있습니다. **t3.micro** 인스턴스를 시작하면 기본적으로 [**무제한** 모드](burstable-performance-instances-unlimited-mode.md)로 설정되므로 CPU 사용량에 따라 추가 요금이 부과될 수 있다는 점에 유의하세요. 인스턴스 유형이 프리 티어에서 사용할 수 있으면 **프리 티어 사용 가능**으로 표시됩니다.  
2025년 7월 15일 이후에 AWS 계정을 생성한 경우 **t3.micro**, **t3.small**, **t4g.micro**, **t4g.small**, **c7i-flex.large**, **m7i-flex.large** 인스턴스 유형을 6개월 동안 또는 크레딧이 소진될 때까지 사용할 수 있습니다.  
자세한 내용은 [2025년 7월 15일 전과 후 프리 티어 혜택](ec2-free-tier-usage.md#ec2-free-tier-comparison) 섹션을 참조하세요.

1. **키 페어(로그인)**에서 **키 페어 이름**에 대해 **시작 템플릿에 포함하지 않음**을 선택된 상태로 두거나, 기존 키 페어를 선택하거나, 새 키 페어를 생성합니다.

1. **네트워크 설정**에서 **시작 템플릿에 포함하지 않음**을 선택된 상태로 두거나 다양한 네트워크 설정에 대한 값을 지정할 수 있습니다.

1. **스토리지 구성**에서 시작 템플릿에 AMI를 지정한 경우 AMI에 루트 볼륨(**볼륨 1(AMI 루트)**을 포함한 하나 이상의 스토리지 볼륨이 포함됩니다. 필요에 따라 인스턴스에 연결할 추가 볼륨을 지정할 수 있습니다. 새 볼륨을 추가하려면 **새 볼륨 추가**를 선택합니다.

1. **리소스 태그**에서 인스턴스가 시작될 때 생성되는 리소스에 [태그를 지정](Using_Tags.md)하려면 **태그 추가**를 선택하고 태그 키와 값 페어를 입력합니다. **리소스 유형(Resource types)**에서 생성 시 태깅할 리소스를 지정합니다. 모든 리소스에 대해 동일한 태그를 지정하거나 다른 리소스에 대해 다른 태그를 지정할 수 있습니다. 추가할 각 추가 태그에 대해 **태그 추가(Add tag)**를 다시 선택합니다.

   시작 템플릿을 사용할 때 생성되는 다음 리소스에 대한 태그를 지정할 수 있습니다.
   + 인스턴스
   + 볼륨
   + Elastic Graphics
   + 스팟 인스턴스 요청
   + 네트워크 인터페이스
**참고**  
시작 템플릿 자체에 태깅하려면 **템플릿 태그(Template tags)**에서 태깅해야 합니다. 자세한 내용은 이 절차의 3단계를 참조하세요.

1. **고급 세부 정보**에서 필드를 볼 수 있도록 섹션을 확장하고 필요에 따라 인스턴스를 위한 추가 파라미터를 지정합니다.

1. **요약** 패널을 사용하여 시작 템플릿 구성을 검토합니다. 링크를 선택하여 원하는 섹션으로 이동한 다음, 필요에 따라 변경할 수 있습니다.

1. 시작 템플릿을 생성할 준비가 되었으면 **시작 템플릿 생성(Create launch template)**을 선택합니다.

------
#### [ AWS CLI ]

**시작 템플릿 생성**  
[create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 명령을 사용합니다.

```
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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2LaunchTemplate.html) 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}
```

------

## 기존 시작 템플릿에서 시작 템플릿 생성
<a name="create-launch-template-from-existing-launch-template"></a>

기존 시작 템플릿을 복제하고 파라미터를 조정하여 새 시작 템플릿을 생성할 수 있습니다. 그러나 Amazon EC2 콘솔을 사용하는 경우에만 이렇게 할 수 있습니다. AWS CLI는 템플릿 복제를 지원하지 않습니다. 파라미터에 대한 설명은 [Amazon EC2 인스턴스 구성 파라미터에 대한 참조](ec2-instance-launch-parameters.md) 섹션을 참조하세요.

------
#### [ Console ]

**기존 시작 템플릿에서 시작 템플릿을 생성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **시작 템플릿**을 선택한 다음 **시작 템플릿 생성**을 선택합니다.

1. **Launch template name**에 대해 시작 템플릿의 설명이 포함된 이름을 입력하세요.

1. [**템플릿 버전 설명(Template version description)**]에 시작 템플릿의 이 버전에 대한 간단한 설명을 입력합니다.

1. 생성 시 시작 템플릿에 태그를 지정하려면 **템플릿 태그**를 확장하고 **새 태그 추가**를 선택한 다음 태그 키와 값 페어를 입력합니다.

1. **소스 템플릿**을 확장하고 **시작 템플릿 이름**에 대해 새 시작 템플릿의 기준으로 사용할 시작 템플릿을 선택합니다.

1. **소스 템플릿 버전**에서 새로운 시작 템플릿의 토대가 되는 시작 템플릿 버전을 선택합니다.

1. 필요에 따라 시작 파라미터를 조정하고 **시작 템플릿 생성**을 선택합니다.

------

## 인스턴스에서 시작 템플릿 생성
<a name="create-launch-template-from-instance"></a>

기존 Amazon EC2 인스턴스의 파라미터를 복제하고 파라미터를 조정하여 시작 템플릿을 생성할 수 있습니다. 파라미터에 대한 설명은 [Amazon EC2 인스턴스 구성 파라미터에 대한 참조](ec2-instance-launch-parameters.md) 섹션을 참조하세요.

------
#### [ Console ]

**인스턴스에서 시작 템플릿을 생성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택하고 **작업**, **이미지 및 템플릿**, **인스턴스에서 템플릿 생성**을 선택합니다.

1. 이름, 설명 및 태그를 입력하고 필요에 따라 시작 파라미터를 조정합니다.
**참고**  
인스턴스에서 시작 템플릿을 생성할 때 인스턴스의 네트워크 인터페이스 ID 및 IP 주소는 이 템플릿에 포함되지 않습니다.

1. **시작 템플릿 생성**을 선택합니다.

------
#### [ AWS CLI ]

AWS CLI를 사용하면 먼저 인스턴스에서 시작 템플릿 데이터를 가져온 다음 시작 템플릿 데이터를 사용해 시작 템플릿을 생성하여 기존 인스턴스에서 시작 템플릿을 생성할 수 있습니다.

**인스턴스에서 시작 템플릿 데이터를 가져오려면**
+ [get-launch-template-data](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-launch-template-data.html) 명령을 사용하여 인스턴스 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](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 명령을 사용하여 이전 절차의 출력을 사용해 시작 템플릿을 생성합니다. AWS CLI를 사용하여 시작 템플릿을 생성하는 방법에 대한 자세한 내용은 [파라미터를 지정하여 시작 템플릿 생성](#create-launch-template-define-parameters) 섹션을 참조하세요.

------

## AMI ID 대신 Systems Manager 파라미터 사용
<a name="use-an-ssm-parameter-instead-of-an-ami-id"></a>

시작 템플릿에 AMI ID를 지정하는 대신 AWS Systems Manager 파라미터를 지정할 수 있습니다. AMI ID가 변경되면 Systems Manager Parameter Store에서 Systems Manager 파라미터를 업데이트하여 한 곳에서 AMI ID를 업데이트할 수 있습니다. 다른 AWS 계정과 파라미터를 [공유](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html)할 수도 있습니다. 하나의 계정에 AMI 파라미터를 중앙에서 저장 및 관리하고 이를 참조해야 하는 다른 모든 계정과 공유할 수 있습니다. Systems Manager 파라미터를 사용하면 한 번의 작업으로 모든 시작 템플릿을 업데이트할 수 있습니다.

Systems Manager 파라미터는 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)에서 생성하는 사용자 정의 키-값 페어입니다. 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`로 확인됩니다.

![\[Parameter Store의 Systems Manager 파라미터를 사용하여 시작 템플릿 업데이트\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/launch-template-ami-alias.png)


### AMI ID에 대한 Systems Manager 파라미터 형식
<a name="ssm-parameter-format-for-ami-ids"></a>

시작 템플릿을 사용하려면 AMI ID 대신 사용 시 사용자 정의 Systems Manager 파라미터가 다음 형식을 준수해야 합니다.
+ 파라미터 유형: `String`
+ 파라미터 데이터 유형: `aws:ec2:image` - 입력한 값이 AMI ID에 올바른 형식인지 Parameter Store에서 검증하도록 합니다.

AMI ID에 유효한 파라미터를 생성하는 방법에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [Systems Manager 파라미터 생성](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)을 참조하세요.

### 시작 템플릿의 Systems Manager 파라미터 형식
<a name="ssm-parameter-format-in-launch-templates"></a>

시작 템플릿에서 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 파라미터는 버전이 지정된 리소스입니다. 파라미터를 업데이트하면 파라미터의 새 버전이 연속적으로 생성됩니다. Systems Manager는 특정 버전의 파라미터에 매핑할 수 있는 [파라미터 레이블](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html)을 지원합니다.

예를 들어, `golden-ami` 파라미터에는 `1`, `2`, `3`의 세 가지 버전이 있을 수 있습니다. 버전 `2`에 매핑되는 파라미터 레이블 `beta`와 버전 `3`에 매핑되는 파라미터 레이블 `prod`를 생성할 수 있습니다.

다음 형식 중 하나를 사용하여 시작 템플릿에 `golden-ami` 파라미터의 버전 3을 지정할 수 있습니다.
+ `resolve:ssm:golden-ami:3`
+ `resolve:ssm:golden-ami:prod`

버전 또는 레이블 지정은 선택 사항입니다. 버전 또는 레이블이 지정되지 않은 경우 파라미터의 최신 버전이 사용됩니다.

### 시작 템플릿에 Systems Manager 파라미터 지정
<a name="specify-systems-manager-parameter-in-launch-template"></a>

시작 템플릿 또는 새 버전의 시작 템플릿을 생성할 때 시작 템플릿에 AMI ID 대신 Systems Manager 파라미터를 지정할 수 있습니다.

------
#### [ Console ]

**시작 템플릿에 Systems Manager 파라미터를 지정하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **시작 템플릿**을 선택한 다음 **시작 템플릿 생성**을 선택합니다.

1. **Launch template name**에 대해 시작 템플릿의 설명이 포함된 이름을 입력하세요.

1. **Application and OS Images (Amazon Machine Image)**(애플리케이션 및 OS 이미지(Amazon Machine Image))에서 **Browse more AMIs**(더 많은 AMI 찾아보기)를 선택하세요.

1. 검색 창 오른쪽에 있는 화살표 버튼을 선택한 다음 **사용자 지정 값/Systems Manager 파라미터 지정**을 선택하세요.

1. **사용자 지정 값 또는 Systems Manager 파라미터 지정** 대화 상자에서 다음을 수행합니다.

   1. **AMI ID 또는 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***

   1. **저장**을 선택합니다.

1. 필요에 따라 다른 시작 템플릿 파라미터를 지정하고 **시작 템플릿 생성**을 선택합니다.

자세한 내용은 [파라미터를 지정하여 시작 템플릿 생성](#create-launch-template-define-parameters) 섹션을 참조하세요.

------
#### [ AWS CLI ]

**시작 템플릿에 Systems Manager 파라미터 지정**
+ [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 명령을 사용하여 시작 템플릿을 생성합니다. 사용할 AMI를 지정하려면 다음 형식 중 하나를 사용하여 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***

  아래 예제에서는 다음을 지정하는 시작 템플릿을 생성합니다.
  + 시작 템플릿의 이름(`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가 있는지 확인
<a name="ssm-parameter-verify-ami-id"></a>

**Systems Manager 파라미터를 실제 AMI ID로 확인하려면**  
[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) 명령을 사용하고 `--resolve-alias` 파라미터를 포함합니다.

```
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",
            }
        }
    ]
}
```

### 관련 리소스
<a name="ssm-parameter-related-resources"></a>

Systems Manager 파라미터 작업에 대한 자세한 내용은 Systems Manager 설명서의 다음 참조 자료에서 확인할 수 있습니다.
+ Amazon EC2에서 지원하는 AMI 공용 파라미터를 조회하는 방법에 대한 자세한 내용은 [AMI 공용 파라미터 호출](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)을 참조하세요.
+ 다른 AWS 계정과 또는 AWS Organizations를 통해 파라미터를 공유하는 방법에 대한 자세한 내용은 [Working with shared parameters](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html)를 참조하세요.
+ 파라미터가 성공적으로 생성되었는지 모니터링하는 방법에 대한 자세한 내용은 [Native parameter support for Amazon Machine Image IDs](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)를 참조하세요.

### 제한 사항
<a name="ssm-parameter-limitations"></a>
+ `instant` 유형의 EC2 Fleet은 AMI ID 대신 Systems Manager 파라미터가 지정된 시작 템플릿 사용을 지원합니다.
+ `maintain` 및 `request` 유형의 EC2 Fleet과 스팟 플릿은 AMI ID 대신 Systems Manager 파라미터가 지정된 시작 템플릿을 지원하지 않습니다. `maintain` 및 `request` 유형의 EC2 Fleet과 스팟 플릿의 경우 시작 템플릿에서 AMI를 지정하려면 AMI ID를 지정해야 합니다.
+ EC2 Fleet에서 [속성 기반 인스턴스 선택](ec2-fleet-attribute-based-instance-type-selection.md)을 사용하는 경우 AMI ID 대신 Systems Manager 파라미터를 지정할 수 없습니다. 속성 기반 인스턴스 선택을 사용하는 경우 AMI ID를 지정해야 합니다.
+ Amazon EC2 Auto Scaling에는 다른 제한 사항이 있습니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [시작 템플릿에 AMI ID 대신 AWS Systems Manager 파라미터 사용](https://docs.aws.amazon.com/autoscaling/ec2/userguide/using-systems-manager-parameters.html)을 참조하세요.