AWS CloudFormation의 시작 구성이 변경되지 않았을 때 롤링 업데이트를 시작하려면 어떻게 해야 하나요?
최종 업데이트 날짜: 2022년 8월 16일
시작 구성을 수정하지 않고 모든 AWS CloudFormation 스택 업데이트에서 Auto Scaling 그룹에 롤링 업데이트를 시작하려고 합니다.
간략한 설명
Auto Scaling 그룹에 대한 롤링 업데이트는 UpdatePolicy 속성의 특정 조건이 충족되는 경우에만 시작할 수 있습니다.
롤링 업데이트를 시작하려면 CloudFormation 템플릿의 시작 구성에서 toggle 파라미터를 생성할 수 있습니다. 그러나 스택 업데이트 중에 toggle 파라미터의 값을 변경하면 UserData 속성이 수정됩니다. 모든 UserData 수정에는 대체가 필요합니다. CloudFormation은 UserData에 대한 수정을 감지한 다음 LaunchConfiguration 리소스를 대체합니다. 이 대체는 UpdatePolicy 속성에 의해 정의된 Auto Scaling 롤링 업데이트를 트리거합니다.
해결 방법
다음 단계에서는 AutoScalingRollingUpdate 정책이 Auto Scaling 그룹에 대해 구성되고 Auto Scaling 그룹이 LaunchConfiguration을 참조하도록 구성되어 있다고 가정합니다.
중요: 템플릿에 toggle 파라미터를 추가할 때 UserData 속성의 다른 요소에 영향을 주지 않도록 주의하세요. 또한 cfn-signal 앞에 toggle 파라미터를 추가하지 마세요.
1. CloudFormation 템플릿에서 Toggle을 파라미터로 정의합니다.
JSON:
"Parameters": {
"Toggle": {
"Type": "String",
"AllowedValues": ["true","false"],
"Default": "true"
}
}
YAML:
Parameters:
Toggle:
Type: String
AllowedValues:
- 'true'
- 'false'
Default: 'true'
2. 템플릿의 시작 구성에서 UserData 속성의 toggle 파라미터를 참조한 다음, 스택을 시작합니다. 다음의 JSON 및 YAML 예제를 참조하세요.
JSON:
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"ImageId" : { "Ref" : "ImageID" },
"UserData" : { "Fn::Base64" : { "Ref" : "Toggle" }
...
...
},
"InstanceType" : { "Ref" : "Type" }
}
}
YAML:
LaunchConfig:
Type: 'AWS::AutoScaling::LaunchConfiguration'
Properties:
ImageId: !Ref ImageID
UserData:
'Fn::Base64': !Ref Toggle
...
...
InstanceType: !Ref Type
중요: 스택을 업데이트할 때 롤링 업데이트를 시작하려면 초기 설정에 따라 파라미터의 값을 true에서 false로 또는 false에서 true로 변경하세요.
참고: toggle 파라미터 해결책은 LaunchConfigurationName과 같이 대체가 필요한 업데이트의 속성 및 AWS::EC2::LaunchTemplate과 같은 리소스에 사용할 수 있습니다.