기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CloudFormation 스택을 시작 템플릿으로 마이그레이션
기존 AWS CloudFormation 스택 템플릿을 시작 구성에서 시작 템플릿으로 마이그레이션할 수 있습니다. 이렇게 하려면, 시작 템플릿을 기존 스택 템플릿에 직접 추가한 다음, 시작 템플릿을 스택 템플릿의 Auto Scaling 그룹과 연결합니다. 그런 다음, 수정된 템플릿을 사용하여 스택을 업데이트합니다.
시작 템플릿으로 마이그레이션할 때이 주제에서는 CloudFormation 스택 템플릿에서 시작 구성을 시작 템플릿으로 다시 작성하는 지침을 제공하여 시간을 절약합니다. 시작 템플릿으로 시작 구성을 마이그레이션하기에 대한 자세한 내용은 Auto Scaling 그룹을 시작 템플릿으로 마이그레이션(을)를 참조하세요.
시작 구성을 사용하는 Auto Scaling 그룹 찾기
시작 구성을 사용하는 Auto Scaling 그룹을 찾으려면
-
다음 describe-auto-scaling-groups 명령을 사용하여 지정된 리전에서 시작 구성을 사용하는 Auto Scaling 그룹의 이름을 나열합니다. 결과를 (
aws:cloudformation:stack-name
태그 키로 필터링하여) a CloudFormation 스택과 연결된 그룹으로 좁히는--filters
옵션을 포함합니다.aws autoscaling describe-auto-scaling-groups --region
REGION
\ --filters Name=tag-key,Values=aws:cloudformation:stack-name \ --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'다음은 출력의 예입니다.
[ "{stack-name}-group-1", "{stack-name}-group-2", "{stack-name}-group-3" ]
에서 마이그레이션할 Auto Scaling 그룹을 찾고 출력을 필터링하는 데 유용한 추가 AWS CLI 명령을 찾을 수 있습니다Auto Scaling 그룹을 시작 템플릿으로 마이그레이션.
중요
스택 리소스AWSEB
의 이름이 인 경우 이를 통해 생성되었음을 의미합니다 AWS Elastic Beanstalk. 이러한 경우에는 Elastic Beanstalk가 시작 구성을 제거하고 해당 내용을 시작 템플릿으로 바꾸도록 Beanstalk 환경을 업데이트해야 합니다.
시작 템플릿을 사용하도록 스택 업데이트
이 섹션의 단계를 따라 다음을 수행합니다.
-
상응하는 시작 템플릿 속성을 사용하여 시작 구성을 시작 템플릿으로 다시 작성합니다.
-
새로운 시작 템플릿을 Auto Scaling 그룹에 연결합니다.
-
이 업데이트를 배포합니다.
스택 템플릿을 수정하고 스택을 업데이트하려면
-
AWS CloudFormation 사용 설명서의 스택 템플릿 수정에 설명된 것과 동일한 일반적인 스택 템플릿 수정 절차를 따릅니다.
-
시작 구성을 시작 템플릿으로 다시 작성합니다. 다음 예를 참조하세요.
예: 간단한 시작 구성
--- Resources: myLaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroups: - !Ref EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}
예: 상응하는 시작 템플릿
--- Resources: myLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName:
!Sub ${AWS::StackName}-launch-template
LaunchTemplateData: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroupIds: - Ref! EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -x yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}Amazon EC2가 지원하는 모든 속성에 대한 참조 정보는 AWS CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate를 참조하세요.
시작 템플릿에 값이
!Sub ${AWS::StackName}-launch-template
인LaunchTemplateName
속성이 어떻게 포함되어 있는지 확인합니다. 이것은 스택 이름을 시작 템플릿의 이름에 포함시키길 원할 경우 필요합니다. -
IamInstanceProfile
속성이 시작 구성에 있는 경우 속성을 구조로 변환하고 인스턴스 프로파일의 이름 또는 ARN를 지정해야 합니다. 예제는 AWS::EC2::LaunchTemplate를 참조하세요. -
시작 구성에
AssociatePublicIpAddress
,InstanceMonitoring
또는PlacementTenancy
속성이 있는 경우, 이러한 내용들을 구조로 변환해야 합니다. 예제는 AWS::EC2::LaunchTemplate를 참조하세요.단, Auto Scaling 그룹에 사용한 서브넷의
MapPublicIpOnLaunch
속성 값이 시작 구성의AssociatePublicIpAddress
속성 값과 일치하는 경우는 예외입니다. 이 경우AssociatePublicIpAddress
속성을 무시할 수 있습니다.AssociatePublicIpAddress
속성은MapPublicIpOnLaunch
속성을 재정의하여 인스턴스가 시작 시 퍼블릭 IPv4 주소를 수신할지 여부를 변경하는 데만 사용됩니다. -
SecurityGroups
속성의 보안 그룹을 시작 템플릿의 두 위치 중 하나로 복사할 수 있습니다. 일반적으로, 보안 그룹을SecurityGroupIds
속성에 복사합니다. 하지만, 시작 템플릿 내에NetworkInterfaces
구조를 생성하여AssociatePublicIpAddress
속성을 지정하는 경우에는 보안 그룹을 네트워크 인터페이스의Groups
속성에 대신 복사해야 합니다. -
가 로
NoDevice
설정된 시작 구성에BlockDeviceMapping
구조가 있는true
경우 Amazon EC2가 디바이스를 생략하도록 시작 템플릿NoDevice
에에 대한 빈 문자열을 지정해야 합니다. -
시작 구성에
SpotPrice
속성이 있는 경우, 시작 템플릿에서 해당 속성을 생략하는 것이 좋습니다. 스팟 인스턴스가 현재 스팟 가격으로 시작됩니다. 이 가격은 온디맨드 가격을 초과하지 않습니다.스팟 인스턴스를 요청하려면 상호 배타적인 두 가지 옵션이 있습니다.
-
첫 번째는 시작 템플릿의
InstanceMarketOptions
구조를 사용하는 것입니다(권장하지 않음). 자세한 내용은 AWS CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate InstanceMarketOptions를 참조하세요. -
다른 방법은 Auto Scaling 그룹에
MixedInstancesPolicy
구조를 추가하는 것입니다. 이렇게 하면 요청을 만드는 방법에 대한 더 많은 옵션이 제공됩니다. 시작 템플릿의 스팟 인스턴스 요청은 Auto Scaling 그룹당 두 개 이상의 인스턴스 유형 선택을 지원하지 않습니다. 하지만, 혼합 인스턴스 정책은 Auto Scaling 그룹당 두 개 이상의 인스턴스 유형 선택을 지원합니다. 스팟 인스턴스 요청은 두 개 이상의 인스턴스 유형 중에서 선택할 수 있는 이점이 있습니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy를 참조하세요.
-
-
AWS::AutoScaling::AutoScalingGroup 리소스에서
LaunchConfigurationName
속성을 제거합니다. 시작 템플릿을 그 자리에 추가합니다.다음 예제에서 Ref 내장 함수는 논리적 ID가 인 AWS::EC2::LaunchTemplate 리소스의 ID를 가져옵니다
myLaunchTemplate
. GetAtt 함수는Version
속성에 대한 시작 템플릿의 최신 버전 번호(예:1
)를 가져옵니다.예: 혼합 인스턴스 정책 미사용
--- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId:
!Ref myLaunchTemplate
Version:!GetAtt myLaunchTemplate.LatestVersionNumber
...예: 혼합 인스턴스 정책 사용
--- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId:
!Ref myLaunchTemplate
Version:!GetAtt myLaunchTemplate.LatestVersionNumber
...Amazon EC2 Auto Scaling에서 지원하는 모든 속성에 대한 참조 정보는 AWS CloudFormation 사용 설명서의 AWS::AutoScaling::AutoScalingGroup를 참조하세요.
-
이러한 업데이트를 배포할 준비가 되면 CloudFormation 절차에 따라 수정된 스택 템플릿으로 스택을 업데이트합니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 스택 템플릿 수정을 참조하세요.
스택 리소스의 업데이트 동작 이해
CloudFormation 는 제공한 업데이트된 템플릿과 이전 버전의 스택 템플릿에서 설명한 리소스 구성 간의 변경 사항을 비교하여 스택 리소스를 업데이트합니다. 변경되지 않은 리소스 구성은 업데이트 프로세스 동안 영향을 받지 않는 상태로 유지됩니다.
CloudFormation 는 Auto Scaling 그룹에 대한 UpdatePolicy 속성을 지원합니다. 업데이트 중에이 로 UpdatePolicy
설정된 경우이 절차의 단계를 수행한 후 AutoScalingRollingUpdate
CloudFormation 가 InService
인스턴스를 대체합니다. UpdatePolicy
가 로 설정된 경우AutoScalingReplacingUpdate
CloudFormation 는 Auto Scaling 그룹과 해당 웜 풀(있는 경우)을 대체합니다.
Auto Scaling 그룹에 대한 UpdatePolicy
속성을 지정하지 않은 경우 시작 템플릿의 정확성이 확인되지만 CloudFormation 는 Auto Scaling 그룹의 인스턴스에 변경 사항을 배포하지 않습니다. 모든 새 인스턴스는 시작 템플릿을 사용하지만, 기존 인스턴스는 (시작 구성이 존재하지 않음에도) 원래 시작된 시작 구성으로 계속 실행됩니다. 단, 구매 옵션을 변경하는 경우(예를 들어, 혼합 인스턴스 정책을 추가하는 방식을 통해)는 예외입니다. 이 경우 Auto Scaling 그룹은 새 구매 옵션에 맞게 기존 인스턴스를 새 인스턴스로 점진적으로 교체합니다.
시작 구성에서 시작 템플릿으로 이동하기 위해 변경 사항을 롤백해야 하는 경우 롤백 작업을 테스트해야 합니다.
마이그레이션 추적
마이그레이션을 추적하려면
-
AWS CloudFormation 콘솔
에서 업데이트한 스택을 선택한 다음 [이벤트(Events)] 탭을 선택하여 스택 이벤트를 봅니다. -
이벤트 목록을 최신 이벤트로 업데이트하려면 CloudFormation 콘솔에서 새로 고침 버튼을 선택합니다.
-
스택이 업데이트되는 동안, 각 리소스 업데이트에 대한 여러 이벤트를 확인하게 됩니다. 시작 템플릿을 만들려고 할 때 상태 사유 열에 문제가 있음을 나타내는 예외가 표시되는 경우, 잠재적 원인은 Amazon EC2 Auto Scaling 문제 해결: 시작 템플릿(을)를 참조하세요.
-
(선택 사항)
UpdatePolicy
속성 사용에 따라 Amazon EC2 콘솔의 Auto Scaling 그룹 페이지에서 Auto Scaling 그룹의진행 상황을 모니터링할 수 있습니다. Auto Scaling 그룹을 선택합니다. Activity(활동) 탭에서 Activity history(활동 기록)의 Status(상태) 열에 Auto Scaling 그룹이 성공적으로 인스턴스를 시작 또는 해지했는지와 크기 조정 활동이 아직 진행 중인지 여부가 표시됩니다. -
스택 업데이트가 완료되면 CloudFormation 는
UPDATE_COMPLETE
스택 이벤트를 실행합니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 스택 업데이트 진행 상황 모니터링을 참조하세요. -
스택 업데이트가 완료되면 Amazon EC2 콘솔의 템플릿 시작 페이지
와 구성 시작 페이지를 엽니다. 새 시작 템플릿이 생성되고 시작 구성이 삭제된 것을 확인할 수 있습니다.
시작 구성 매핑 참조
참조 목적으로 다음 표에는 AWS::AutoScaling::WordWord::LaunchConfigurationWord::Word 리소스의 모든 최상위 속성이 나열되어 있으며 해당 속성은 AWS::EC2::LaunchTemplate 리소스에 나열되어 있습니다.
시작 구성 소스 속성 | 시작 템플릿 대상 속성 |
---|---|
AssociatePublicIpAddress |
NetworkInterfaces.AssociatePublicIpAddress |
BlockDeviceMappings |
BlockDeviceMappings |
ClassicLinkVPCId |
사용할 수 없음¹ |
ClassicLinkVPCSecurityGroups |
사용할 수 없음¹ |
EbsOptimized |
EbsOptimized |
IamInstanceProfile |
IamInstanceProfile.Arn 또는 IamInstanceProfile.Name 중 하나, 하지만 둘 다는 아님 |
ImageId |
ImageId |
InstanceId |
InstanceId |
InstanceMonitoring |
Monitoring.Enabled |
InstanceType |
InstanceType |
KernelId |
KernelId |
KeyName |
KeyName |
LaunchConfigurationName |
LaunchTemplateName |
MetadataOptions |
MetadataOptions |
PlacementTenancy |
Placement.Tenancy
|
RamDiskId |
RamDiskId |
SecurityGroups |
SecurityGroupIds 또는 NetworkInterfaces.Groups 중 하나, 하지만 둘 다는 아님 |
SpotPrice |
InstanceMarketOptions.SpotOptions.MaxPrice |
UserData |
UserData |
1 EC2-Classic을 더 이상 사용할 수 없으므로 ClassicLinkVPCId
및 ClassicLinkVPCSecurityGroups
속성을 시작 템플릿에서 사용할 수 없습니다.