를 사용하여 시작 템플릿을 생성하고 관리하는 예제 AWS CLI - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 시작 템플릿을 생성하고 관리하는 예제 AWS CLI

AWS Management Console, AWS Command Line Interface (AWS CLI) 또는 를 통해 시작 템플릿을 생성하고 관리할 수 있습니다SDKs. 이 섹션에서는 에서 Amazon EC2 Auto Scaling에 대한 시작 템플릿을 생성하고 관리하는 예를 보여줍니다 AWS CLI.

사용 예

{ "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. 이 시작 템플릿에서 생성된 인스턴스가 기본 에서 시작되면 기본적으로 퍼블릭 IP 주소를 수신VPC합니다. 인스턴스가 기본값이 아닌 에서 시작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"}'

따옴표 JSON형식의 파라미터에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서의 에서 문자열로 따옴표 사용을 AWS CLI 참조하세요.

또는 구성 파일에서 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" }

시작 시 인스턴스에 태그를 지정하는 태그 지정

다음 예제에서는 시작 시 인스턴스에 태그(예: purpose=webserver)를 추가합니다.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --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-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"IamInstanceProfile":{"Name":"my-instance-profile"},"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

퍼블릭 IP 주소 배정

다음 create-launch-template 예제에서는 기본값이 아닌 에서 시작된 인스턴스에 퍼블릭 주소를 할당하도록 시작 템플릿을 구성합니다VPC.

참고

네트워크 인터페이스를 지정할 때 Auto Scaling 그룹이 인스턴스를 시작할 VPC 의 보안 그룹에 Groups 해당하는 값을 지정합니다. 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"}'

시작 시 인스턴스를 구성하는 사용자 데이터 스크립트 지정

다음 예제에서는 시작 시 인스턴스를 구성하는 base64로 인코딩된 문자열로 사용자 데이터 스크립트를 지정합니다. create-launch-template 명령에는 base64로 인코딩된 사용자 데이터가 필요합니다.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"UserData":"IyEvYmluL2Jhc...","ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

블록 디바이스 매핑 지정

다음 create-launch-template 예제에서는 블록 디바이스 매핑을 사용하여 시작 템플릿을 생성합니다. 에 매핑된 22기가바이트 EBS 볼륨입니다/dev/xvdcz. /dev/xvdcz 볼륨은 범용SSD(gp2) 볼륨 유형을 사용하며 연결된 인스턴스를 종료할 때 삭제됩니다.

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

외부 공급 업체의 소프트웨어 라이선스를 가져오기 위한 전용 호스트 지정

host 테넌시를 지정한 경우 호스트 리소스 그룹 및 License Manager 라이센스 구성을 지정하여 외부 공급 업체에서 적합한 소프트웨어 라이선스를 가져올 수 있습니다. 그런 다음 다음 create-launch-template 명령을 사용하여 EC2 인스턴스에서 라이선스를 사용할 수 있습니다.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --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-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"}'

여러 네트워크 인터페이스 생성

다음 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"}'

여러 네트워크 카드 및 탄력적 패브릭 어댑터(EFAs)를 지원하는 인스턴스 유형을 사용하는 경우 보조 네트워크 카드에 보조 인터페이스를 추가하고 다음 create-launch-template 명령을 EFA 사용하여 를 활성화할 수 있습니다. 자세한 내용은 Amazon EC2 사용 설명서 EFA 시작 템플릿에 추가를 참조하세요.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --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가 아닌 변형을 사용하는 인스턴스에서 비대칭 라우팅이 도입될 수 있습니다. 이러한 유형의 구성이 필요한 경우 OS 내에서 보조 네트워크 인터페이스를 구성해야 합니다. 예를 들어 AWS 지식 센터의 Ubuntu EC2 인스턴스에서 보조 네트워크 인터페이스를 작동하려면 어떻게 해야 합니까?를 참조하세요.

시작 템플릿 관리

에는 시작 템플릿을 관리하는 데 도움이 되는 몇 가지 다른 명령이 AWS CLI 포함되어 있습니다.

시작 템플릿 나열 및 설명

두 가지 AWS CLI 명령을 사용하여 시작 템플릿에 대한 정보를 가져올 수 있습니다describe-launch-templatesdescribe-launch-template-versions.

describe-launch-templates 명령을 사용하면 생성한 시작 템플릿의 목록을 가져올 수 있습니다. 옵션을 사용하여 시작 템플릿 이름에 대한 결과를 필터링하거나, 시간, 태그 키 또는 태그 키-값 조합을 만들 수 있습니다. 이 명령은 시작 템플릿 식별자, 최신 버전, 기본 버전 등을 비롯하여 시작 템플릿에 대한 요약 정보를 반환합니다.

다음 예제에서는 지정된 시작 템플릿에 대한 요약을 제공합니다.

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 옵션을 사용하지 않는 경우 모든 시작 템플릿에 대한 정보가 반환됩니다.

다음 describe-launch-template-versions 명령은 지정된 시작 템플릿의 버전을 설명하는 정보를 제공합니다.

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"

시작 템플릿의 기본 버전을 설정하려면 modify-launch-template 명령을 사용합니다.

시작 템플릿 버전 삭제

다음 delete-launch-template-versions 명령은 지정된 시작 템플릿 버전을 삭제합니다.

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

시작 템플릿 삭제

시작 템플릿이 더 이상 필요하지 않은 경우 다음 delete-launch-template 명령을 사용하여 삭제할 수 있습니다. 시작 템플릿을 삭제하면 모든 버전이 삭제됩니다.

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

시작 템플릿을 사용하도록 Auto Scaling 그룹 업데이트

update-auto-scaling-group 명령을 사용하여 기존 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'