AWS CloudFormation의 시작 구성이 변경되지 않았을 때 롤링 업데이트를 시작하려면 어떻게 해야 하나요?

2분 분량
0

시작 구성을 수정하지 않고 모든 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과 같은 리소스에 사용할 수 있습니다.


AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠