

새로운 *CloudFormation 템플릿 참조 안내서*입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)를 참조하세요.

# `UpdatePolicy` 속성
<a name="aws-attribute-updatepolicy"></a>

`UpdatePolicy` 속성을 사용하여 CloudFormation에서 스택 업데이트 작업 중 특정 리소스에 대한 업데이트를 처리하는 방법을 지정합니다.

**Topics**
+ [개요](#aws-resource-update-policies)
+ [WorkSpaces Applications 업데이트 정책](#aws-attribute-update-policy-app-stream-fleet)
+ [AutoScalingReplacingUpdate 정책](#cfn-attributes-updatepolicy-replacingupdate)
+ [AutoScalingRollingUpdate 정책](#cfn-attributes-updatepolicy-rollingupdate)
+ [AutoScalingInstanceRefresh 정책](#cfn-attributes-updatepolicy-instancerefresh)
+ [AutoScalingScheduledAction 정책](#cfn-attributes-updatepolicy-scheduledactions)
+ [UseOnlineResharding 정책](#cfn-attributes-updatepolicy-useonlineresharding)
+ [EnableVersionUpgrade 정책](#cfn-attributes-updatepolicy-upgradeopensearchdomain)
+ [CodeDeployLambdaAliasUpdate 정책](#cfn-attributes-updatepolicy-codedeploylambdaaliasupdate)
+ [예제](#aws-attribute-updatepolicy-examples)

## 개요
<a name="aws-resource-update-policies"></a>

`UpdatePolicy` 속성을 사용하면 여기에 설명된 대로 다음 리소스가 업데이트되는 방식을 제어할 수 있습니다.
+ **[AWS::AppStream::Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html)** - CloudFormation이 플릿을 중지하고 시작할 수 있으며, 이로 인해 플릿의 인스턴스가 교체됩니다. 이렇게 하면 스택을 업데이트한 후 즉시 모든 인스턴스에 최신 변경 사항이 적용됩니다.
+ **[AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html)** – Auto Scaling 그룹에서는 하나 이상의 업데이트 정책을 사용하여 CloudFormation이 특정 업데이트를 처리하는 방식을 제어할 수 있습니다. 이러한 정책에는 다음이 포함됩니다.
  + **`AutoScalingReplacingUpdate` 및 `AutoScalingRollingUpdate` 정책** - CloudFormation은 `AutoScalingReplacingUpdate` 정책을 사용하여 Auto Scaling 그룹 및 해당 인스턴스를 교체하거나 `AutoScalingRollingUpdate` 정책을 사용하여 인스턴스만 교체할 수 있습니다. 이러한 대체 작업은 다음 중 하나 이상을 변경한 경우 발생합니다.
    + Auto Scaling 그룹의 [AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html)을 변경합니다.
    + auto scaling의 `VPCZoneIdentifier` 속성을 변경합니다.
    + auto scaling의 `LaunchTemplate` 속성을 변경합니다.
    + auto scaling의 `PlacementGroup` 속성을 변경합니다.
    + 현재 `LaunchConfiguration`과 일치하지 않는 인스턴스가 포함된 Auto Scaling 그룹을 업데이트합니다.

    `AutoScalingReplacingUpdate` 및 `AutoScalingRollingUpdate` 정책이 둘 다 지정된 경우 `WillReplace` 속성을 `true`로 설정하면 `AutoScalingReplacingUpdate`가 우선 적용됩니다.
  + **`AutoScalingInstanceRefresh` 정책** - CloudFormation은 Auto Scaling 그룹의 특정 속성을 변경할 때 Auto Scaling 인스턴스 새로 고침을 실행합니다. `AutoScalingRollingUpdate`와 비교했을 때 이 정책은 인스턴스 유지 관리 정책(launch-before-terminate 포함), 종료 정책, 스케일 인 보호, 루트 볼륨 교체 및 추가 Amazon EC2 Auto Scaling 기능을 지원합니다. 동일한 Auto Scaling 그룹에서 `AutoScalingInstanceRefresh` 및 `AutoScalingRollingUpdate`를 모두 지정할 수는 없습니다. 자세한 내용은 [AutoScalingInstanceRefresh 정책](#cfn-attributes-updatepolicy-instancerefresh)을 참조하세요.
  + **`AutoScalingScheduledAction` 정책** - 특정 시간에 그룹의 규모 조정 작업을 수행하는 예약된 작업을 사용하여 Auto Scaling 그룹을 포함하는 스택을 업데이트하는 경우 이 정책이 적용됩니다. CloudFormation은 그룹의 최소 크기, 최대 크기 또는 원하는 용량을 수정할 수 없으며, 이러한 값은 스택 템플릿에서 명시적으로 변경되어야 합니다. 이 정책은 예약된 규모 조정 활동을 방해할 수 있는 예상치 못한 업데이트를 방지하는 데 도움이 됩니다.
+ **[AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html)** - CloudFormation에서 전체 리소스를 대체하는 대신 샤드를 추가 또는 제거함으로써 복제 그룹의 샤드를 수정할 수 있습니다.
+ **[AWS::OpenSearchService::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opensearchservice-domain.html)** 및 **[AWS::Elasticsearch::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html)**(레거시) – CloudFormation은 전체 리소스를 대체하지 않고도 OpenSearch Service 도메인을 OpenSearch 또는 Elasticsearch의 새 버전으로 업그레이드할 수 있습니다.
+ **[AWS::Lambda::Alias](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-alias.html)** – CloudFormation에서 별칭 버전이 변경될 때 CodeDeploy 배포 작업을 수행할 수 있습니다.

다음 섹션에서는 각 리소스 유형에서 지원하는 `UpdatePolicy` 속성의 구문 및 속성을 설명합니다.

## WorkSpaces Applications 업데이트 정책
<a name="aws-attribute-update-policy-app-stream-fleet"></a>

업데이트 전에 WorkSpaces Applications 플릿을 중지하고 업데이트 후에 다시 시작하려면 WorkSpaces Applications 업데이트 정책을 사용하세요.

### 구문
<a name="aws-attribute-update-policy-app-stream-fleet-syntax"></a>

#### JSON
<a name="aws-attribute-update-policy-app-stream-fleet-syntax-json"></a>

```
{
    "UpdatePolicy": {
        "StopBeforeUpdate": {
            "Type": "{{Boolean}}"
        },
        "StartAfterUpdate": {
            "Type": "{{Boolean}}"
        }
    }
}
```

#### YAML
<a name="aws-attribute-update-policy-app-stream-fleet-syntax-yaml"></a>

```
UpdatePolicy:
  StopBeforeUpdate:
    Type: {{Boolean}}
  StartAfterUpdate:
    Type: {{Boolean}}
```

`StopBeforeUpdate`  <a name="cfn-attributes-updatepolicy-replacingupdate-StopBeforeUpdate"></a>
업데이트 전에 지정된 플릿을 중지합니다.  
*필수 항목 여부*: 아니요

`StartAfterUpdate`  <a name="cfn-attributes-updatepolicy-replacingupdate-StartAfterUpdate"></a>
업데이트 후 지정된 플릿을 시작합니다.  
*필수 항목 여부*: 아니요

## AutoScalingReplacingUpdate 정책
<a name="cfn-attributes-updatepolicy-replacingupdate"></a>

Auto Scaling 그룹 및 이 그룹에 포함된 인스턴스를 대체하려면 `AutoScalingReplacingUpdate` 정책을 사용합니다.

업데이트를 시도하기 전에 이전 및 새 Auto Scaling 그룹에 대한 Amazon EC2 용량이 충분한지 확인하십시오.

### 구문
<a name="cfn-attributes-updatepolicy-replacingupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-replacingupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingReplacingUpdate" : {
    "WillReplace" : {{Boolean}}
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-replacingupdate-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingReplacingUpdate:
    WillReplace: {{Boolean}}
```

### 속성
<a name="cfn-attributes-updatepolicy-replacingupdate-properties"></a>

`WillReplace`  <a name="cfn-attributes-updatepolicy-replacingupdate-willreplace"></a>
Auto Scaling 그룹 및 이 그룹이 포함된 인스턴스를 업데이트 중 바꿀지 여부를 지정합니다. 이를 바꾸는 동안 CloudFormation에서 새 그룹 생성이 완료될 때까지 이전 그룹을 보존합니다. 업데이트에 실패하는 경우, CloudFormation에서 이전 Auto Scaling 그룹으로 롤백하고 새 Auto Scaling 그룹을 삭제할 수 있습니다.  
CloudFormation은 새 그룹을 생성하는 동안 어떠한 인스턴스도 분리 또는 연결하지 않습니다. 새 Auto Scaling 그룹이 생성된 후 CloudFormation은 정리 프로세스 중 이전 Auto Scaling 그룹을 삭제합니다.  
`WillReplace` 파라미터를 설정하는 경우 일치하는 [`CreationPolicy` 속성](aws-attribute-creationpolicy.md)를 지정합니다. 최소 인스턴스 수(`MinSuccessfulInstancesPercent` 속성으로 지정)가 `Timeout` 기간(`CreationPolicy` 특성으로 지정됨) 이내에 성공 신호를 보내지 않으면 대체 업데이트는 실패하고 CloudFormation은 이전 Auto Scaling 그룹으로 롤백합니다.  
*유형*: 부울  
*필수 항목 여부*: 아니요

## AutoScalingRollingUpdate 정책
<a name="cfn-attributes-updatepolicy-rollingupdate"></a>

규모 조정 활동이 이전 인스턴스를 새 인스턴스로 점진적으로 교체할 때까지 기다리는 대신 Auto Scaling 그룹 내 인스턴스의 롤링 업데이트를 수행하려면 `AutoScalingRollingUpdate` 정책을 사용하세요. 이 정책을 사용하면 CloudFormation에서 전체 리소스를 교체하지 않고 Auto Scaling 그룹에 있는 인스턴스를 배치 단위로 교체할지, 아니면 한 번에 교체할지 여부를 융통성 있게 지정할 수 있습니다.

`AutoScalingRollingUpdate` 정책을 사용할 때 고려할 사항:

**주의**  
롤링 업데이트는 Auto Scaling 그룹에 구성된 인스턴스 유지 관리 정책을 준수하지 않습니다. 롤링 업데이트 중에 정상 용량이 그룹에 설정된 `MinHealthyPercentage` 아래로 떨어질 수 있으며, CloudFormation은 `MaxHealthyPercentage`에 관계없이 기존 인스턴스를 종료하기 전에 새 인스턴스를 시작하지 않습니다. 스택 업데이트 중에 인스턴스 유지 관리 정책을 유지하려면 대신 [AutoScalingInstanceRefresh 정책](#cfn-attributes-updatepolicy-instancerefresh)을 사용합니다.
+ CloudFormation에서 업데이트를 롤백할 때 현재 스택 업데이트 전에 템플릿에 지정된 `UpdatePolicy` 구성을 사용합니다. 예를 들어, `UpdatePolicy`에서 `MaxBatchSize`를 1에서 10으로 변경하고 스택 업데이트를 수행했지만 업데이트가 실패했습니다. 이 경우 CloudFormation에서는 롤백할 때 최대 배치 크기로 10이 아닌 1을 사용합니다. 이 시나리오를 방지하려면 롤링 업데이트를 시작할 가능성이 높은 Auto Scaling 그룹에 업데이트가 적용되기 전에 별도의 업데이트에서 `UpdatePolicy`를 변경하세요.
+ CloudFormation은 롤링 업데이트를 방해하고 실패하게 할 수 있는 Amazon EC2 Auto Scaling 프로세스를 일시적으로 중단하도록 `SuspendProcesses` 속성을 지정할 것을 권장합니다. 자세한 내용은 [CloudFormation 스택을 업데이트할 때 Auto Scaling 그룹을 올바르게 업데이트하려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/auto-scaling-group-rolling-updates)를 참조하세요.

  또는 `AutoScalingInstanceRefresh` 정책은 스택 업데이트 중에 모든 Auto Scaling 그룹 프로세스를 지원하므로 일시 중단하지 않아도 됩니다. 상태 확인 및 AZ 리밸런싱과 같은 프로세스를 활성 상태로 유지해야 하는 경우 대신 `AutoScalingInstanceRefresh`를 사용합니다. 자세한 내용은 [AutoScalingInstanceRefresh 정책](#cfn-attributes-updatepolicy-instancerefresh)을 참조하세요.
+ CloudFormation에서는 인스턴스를 시작 또는 종료할 때 Amazon EC2 Auto Scaling 수명 주기 후크 사용을 지원합니다. 따라서 인스턴스가 다음 상태로 이동하기 전에 인스턴스에 사용자 지정 작업을 수행할 시간을 확보할 수 있습니다. 새 인스턴스가 `InService` 상태에 도달하도록 하려면 사용자 지정 작업을 마칠 때 `CONTINUE` 결과를 포함하여 수명 주기 후크를 완료하세요. 기본적으로 응답이 수신되지 않고 수명 주기 후크 제한 시간이 초과되면 인스턴스 시작이 실패하고 중단된 것으로 간주됩니다. `InService` 상태에 도달한 인스턴스가 없는 경우 롤링 업데이트는 결국 실패합니다.
+ 종료 정책 및 스케일 인 보호와 같은 기타 Amazon EC2 Auto Scaling 기능은 CloudFormation 롤링 업데이트와 함께 사용할 수 없습니다. 이러한 기능이 필요한 경우 대신 `AutoScalingInstanceRefresh`를 사용합니다. 자세한 내용은 [AutoScalingInstanceRefresh 정책](#cfn-attributes-updatepolicy-instancerefresh) 섹션을 참조하세요.
+ `AutoScalingRollingUpdate` 정책을 사용하고 배치 그룹 설정을 제거하면 Auto Scaling 그룹 및 CloudFormation 템플릿에서 배치 그룹이 제거됩니다. 또한 이 작업은 롤링 업데이트를 트리거하므로 새 인스턴스가 배치 그룹으로 시작되지 않습니다.

### 구문
<a name="cfn-attributes-updatepolicy-rollingupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-rollingupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingRollingUpdate" : {
    "MaxBatchSize" : {{Integer}},
    "MinActiveInstancesPercent" : {{Integer}},
    "MinInstancesInService" : {{Integer}},
    "MinSuccessfulInstancesPercent" : {{Integer}},
    "PauseTime" : {{String}},
    "SuspendProcesses" : [ {{List of processes}} ],
    "WaitOnResourceSignals" : {{Boolean}}
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-rollingupdate-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingRollingUpdate:
    MaxBatchSize: {{Integer}}
    MinActiveInstancesPercent: {{Integer}}
    MinInstancesInService: {{Integer}}
    MinSuccessfulInstancesPercent: {{Integer}}
    PauseTime: {{String}}
    SuspendProcesses:
      - {{List of processes}}
    WaitOnResourceSignals: {{Boolean}}
```

### 속성
<a name="aws-attribute-updatepolicy-rollingupdate-properties"></a>

`MaxBatchSize`  <a name="cfn-attributes-updatepolicy-rollingupdate-maxbatchsize"></a>
동시에 바꿀 수 있는 최대 인스턴스 수를 지정합니다.  
*기본값*: `1`  
*최대*: `100`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`MinActiveInstancesPercent`  <a name="cfn-attributes-updatepolicy-rollingupdate-minactiveinstancespercent"></a>
업데이트가 성공하려면 롤링 업데이트 중 해당 그룹의 원하는 용량과 비교하여 `InService` 상태에 있어야 하는 Auto Scaling 그룹의 인스턴스 비율을 지정합니다. 0\~100 범위의 값을 지정할 수 있습니다. CloudFormation은 이를 10분의 1퍼센트 단위로 반올림합니다. 예를 들어 최소 `InService` 비율이 50인 5개의 인스턴스를 업데이트하는 경우 3개 이상의 인스턴스가 `InService` 상태여야 합니다. 인스턴스가 1시간이라는 정해진 시간 내에 `InService` 상태로 전환되지 않으면 CloudFormation은 인스턴스가 업데이트되지 않은 것으로 간주합니다.  
`UpdatePolicy`에서 `MinActiveInstancesPercent`를 설정하면 `AWS::AutoScaling::AutoScalingGroup` 리소스의 `DesiredCapacity` 속성이 해당 Auto Scaling 그룹의 현재 원하는 용량보다 높게 설정된 경우 시작되는 인스턴스에도 영향을 미칩니다.  
*기본값*: `100`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`MinInstancesInService`  <a name="cfn-attributes-updatepolicy-rollingupdate-mininstancesinservice"></a>
CloudFormation에서 이전 인스턴스를 업데이트하는 동안 Auto Scaling 그룹 내에서 작동해야 하는 최소 인스턴스 수를 지정합니다. 이 값은 Auto Scaling 그룹의 [MaxSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize)보다 작아야 합니다.  
`MinInstancesInService` 속성 값을 Auto Scaling 그룹의 [MinSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize) 이상으로 설정하는 것이 좋습니다. 이렇게 하면 롤링 업데이트 중 고객 트래픽을 처리하는 인스턴스가 0개여서 발생할 수 있는 가용성 문제를 방지할 수 있습니다.
*기본값*: `0`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`MinSuccessfulInstancesPercent`  <a name="cfn-attributes-updatepolicy-rollingupdate-minsuccessfulinstancespercent"></a>
Auto Scaling 롤링 업데이트에서 성공 신호를 보내야 하는 인스턴스의 비율을 지정합니다. 이 비율의 인스턴스가 성공 신호를 보내야 업데이트에 성공합니다. 0\~100 범위의 값을 지정할 수 있습니다. CloudFormation은 이를 10분의 1퍼센트 단위로 반올림합니다. 예를 들어 최소 성공 비율 `50`으로 인스턴스 다섯 개를 업데이트하는 경우 인스턴스 세 개에서 성공 신호를 보내야 성공입니다. `PauseTime` 속성에 지정된 시간 내에 인스턴스가 신호를 전송하지 않으면 CloudFormation은 해당 인스턴스가 업데이트되지 않았다고 가정합니다.  
`MinSuccessfulInstancesPercent` 속성 값을 0보다 큰 값으로 설정하는 것이 좋습니다. `MinSuccessfulInstancesPercent` 속성이 0으로 설정되면 CloudFormation은 용량 인스턴스의 0%가 `InService` 상태가 될 때까지 기다립니다. `MinSuccessfulInstancesPercent`는 Auto Scaling 그룹 상태를 `UPDATE_COMPLETE`로 간주하기 전에 즉시 반환되어 스택 템플릿에 정의된 후속 리소스로 이동합니다. 다른 auto scaling이 CloudFormation 템플릿에 정의되어 있으면 동시에 업데이트됩니다. 모든 auto scaling이 `InService` 상태에서 한 번에 0%의 용량 인스턴스로 배포되면 0개의 인스턴스가 고객 트래픽을 처리하므로 가용성 문제가 발생합니다.  
*기본값*: `100`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`PauseTime`  <a name="cfn-attributes-updatepolicy-rollingupdate-pausetime"></a>
인스턴스에 소프트웨어 애플리케이션을 시작할 시간을 주기 위해 인스턴스 배치를 변경한 후 CloudFormation이 일시 정지하는 시간입니다.  
`PauseTime`은 [ISO8601 기간 형식](https://en.wikipedia.org/wiki/ISO_8601#Durations)입니다(`PT{{#}}H{{#}}M{{#}}S` 형식, 여기서 {{\#}}은 각각 시간, 분 및 초를 나타내는 숫자임). 최대 `PauseTime`은 1시간입니다(`PT1H`).  
`WaitOnResourceSignals`가 `true`로 설정되면 `PauseTime`이 제한 시간 값으로 작동합니다. 롤링 업데이트 중 대체되는 인스턴스와 `AWS::AutoScaling::AutoScalingGroup` 리소스의 [DesiredCapacity](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity) 속성을 늘려 추가되는 새 인스턴스에서 필요한 수의 유효한 신호를 수신하기 위해 CloudFormation이 기다리는 최대 시간을 결정합니다. CloudFormation이 예상 신호를 수신하기 전에 `PauseTime`을 초과하면 업데이트가 실패합니다. 최적의 결과를 얻으려면 애플리케이션의 시작 시간이 넉넉하도록 기간을 지정하세요. 업데이트를 롤백해야 하는 경우 `PauseTime`이 짧으면 롤백에 실패할 수 있습니다.
**기본값: `WaitOnResourceSignals` 속성이 `true`로 설정된 경우 `PT5M`(5분)입니다. 그렇지 않으면 기본값이 설정되지 않습니다.  
*유형*: 문자열  
*필수 항목 여부*: 아니요

`SuspendProcesses`  <a name="cfn-attributes-updatepolicy-rollingupdate-suspendprocesses"></a>
스택 업데이트 중 일시 중지할 Auto Scaling 프로세스를 지정합니다. 프로세스를 일시 중지하면 Auto Scaling이 스택 업데이트를 방해하지 않습니다. 예를 들어, Amazon EC2 Auto Scaling에서 경고와 연결된 조정 정책을 시작하지 않도록 경보를 일시 중지할 수 있습니다. 유효한 값은 **Amazon EC2 Auto Scaling 사용 설명서의 [프로세스 유형](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html#process-types)을 참조하세요.  
*기본값*: 지정되지 않음  
*유형*: Auto Scaling 프로세스 목록  
*필수 항목 여부*: 아니요

`WaitOnResourceSignals`  <a name="cfn-attributes-updatepolicy-rollingupdate-waitonresourcesignals"></a>
CloudFormation이 업데이트를 계속하기 전에 새 인스턴스의 성공 신호를 기다릴지 여부를 지정합니다. CloudFormation은 지정된 `PauseTime` 기간 동안 성공 신호를 기다립니다.  
Auto Scaling 그룹에 신호를 보내려면 [cfn-signal](cfn-signal.md) 헬퍼 스크립트를 사용합니다. Elastic Load Balancing과 관련된 Auto Scaling 그룹의 경우 [cfn-init](cfn-init.md) 헬퍼 스크립트를 사용하여 성공 신호를 보내기 전에 인스턴스가 정상인지 확인하는 상태 확인을 추가하는 것을 고려해 보세요. 예를 들어 [GitHub 리포지토리](https://github.com/aws-cloudformation/aws-cloudformation-templates/tree/main/AutoScaling)에서 Amazon EC2 Auto Scaling 롤링 업데이트 샘플 템플릿의 `verify_instance_health` 명령을 참조하세요.  
*기본값*: `false`  
*유형*: 부울  
*필수 항목 여부*: 조건부. `MinSuccessfulInstancesPercent` 속성을 지정하는 경우 `WaitOnResourceSignals` 속성을 `true`로 설정해야 합니다.

## AutoScalingInstanceRefresh 정책
<a name="cfn-attributes-updatepolicy-instancerefresh"></a>

Auto Scaling 인스턴스 새로 고침을 수행하여 Auto Scaling 그룹의 인스턴스를 업데이트하려면 `AutoScalingInstanceRefresh` 정책을 사용합니다. 인스턴스 새로 고침 기능의 전체 목록은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Use an instance refresh to update instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html)을 참조하세요.

CloudFormation은 `AWS::AutoScaling::AutoScalingGroup` 리소스의 다음 속성 중 하나를 업데이트하는 경우에만 인스턴스 새로 고침을 수행합니다.
+ `LaunchTemplate`
+ `MixedInstancesPolicy`
+ `VPCZoneIdentifier`
+ `AvailabilityZones`
+ `AvailabilityZoneIds`
+ `PlacementGroup`

`AutoScalingInstanceRefresh` 정책을 사용하는 경우 다음 사항을 고려합니다.
+ 동일한 Auto Scaling 그룹에서 `AutoScalingInstanceRefresh` 및 `AutoScalingRollingUpdate` 정책을 모두 지정할 수는 없습니다. 그러면 스택 업데이트에 실패합니다.
+ CloudFormation 스택 롤백은 `AutoScalingInstanceRefresh`의 롤백 메커니즘입니다. 인스턴스 새로 고침에 실패하면 CloudFormation은 스택을 롤백하고 새 인스턴스 새로 고침을 시작하여 그룹을 이전 구성으로 복원합니다. CloudFormation에서 이미 시작한 인스턴스 새로 고침에서는 Auto Scaling `RollbackInstanceRefresh` API 작업을 사용할 수 없습니다. 새로 고침을 되돌리려면 `CancelInstanceRefresh` API를 사용하거나 스택 업데이트를 롤백합니다.
+ Auto Scaling 그룹은 한 번에 하나의 인스턴스 새로 고침만 실행할 수 있습니다. `AutoScalingInstanceRefresh` 정책으로 스택 업데이트를 시작할 때 사용자가 시작한 인스턴스 새로 고침이 진행 중인 경우 스택 업데이트에 실패할 수 있습니다.
+ 인스턴스 새로 고침 `Strategy`를 `ReplaceRootVolume`으로 설정하면 시작 템플릿 또는 혼합 인스턴스 정책 내 `ImageId`에 대한 변경만 허용됩니다. 다른 속성을 변경하면 스택 업데이트에 실패할 수 있습니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Replace root volumes during instance refresh](https://docs.aws.amazon.com/autoscaling/ec2/userguide/replace-root-volume.html)를 참조하세요.
+ 스택 업데이트(전달 및 롤백)의 각 방향은 36시간의 CloudFormation 리소스 제한 시간으로 제한됩니다.
+ 장기 실행 인스턴스 새로 고침은 CloudFormation에서 Auto Scaling을 직접 호출하는 데 사용하는 임시 자격 증명의 수명을 초과할 수 있습니다. 이를 방지하려면 스택에서 서비스 역할을 구성합니다. 자세한 내용은 [ CloudFormation 서비스 역할](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html)을 참조하세요.

**참고**  
인스턴스 새로 고침은 [cfn-signal](cfn-signal.md) 헬퍼 스크립트를 지원하지 않습니다. 인스턴스 새로 고침 중에 인스턴스 준비 상태를 확인하는 방법에 대한 자세한 내용은 [인스턴스 새로 고침 중 인스턴스 준비 상태 확인](#cfn-attributes-updatepolicy-instancerefresh-readiness) 섹션을 참조하세요.

### 구문
<a name="cfn-attributes-updatepolicy-instancerefresh-syntax"></a>

#### JSON
<a name="cfn-attributes-updatepolicy-instancerefresh-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingInstanceRefresh" : {
    "Strategy" : {{String}},
    "Preferences" : {
      "AlarmSpecification" : {
        "Alarms" : [ {{List of alarm names}} ]
      },
      "BakeTime" : {{Integer}},
      "CheckpointDelay" : {{Integer}},
      "CheckpointPercentages" : [ {{List of integers}} ],
      "InstanceWarmup" : {{Integer}},
      "MaxHealthyPercentage" : {{Integer}},
      "MinHealthyPercentage" : {{Integer}},
      "ScaleInProtectedInstances" : {{String}},
      "SkipMatching" : {{Boolean}},
      "StandbyInstances" : {{String}}
    }
  }
}
```

#### YAML
<a name="cfn-attributes-updatepolicy-instancerefresh-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingInstanceRefresh:
    Strategy: {{String}}
    Preferences:
      AlarmSpecification:
        Alarms:
          - {{List of alarm names}}
      BakeTime: {{Integer}}
      CheckpointDelay: {{Integer}}
      CheckpointPercentages:
        - {{List of integers}}
      InstanceWarmup: {{Integer}}
      MaxHealthyPercentage: {{Integer}}
      MinHealthyPercentage: {{Integer}}
      ScaleInProtectedInstances: {{String}}
      SkipMatching: {{Boolean}}
      StandbyInstances: {{String}}
```

### 속성
<a name="cfn-attributes-updatepolicy-instancerefresh-properties"></a>

`Strategy`  <a name="cfn-attributes-updatepolicy-instancerefresh-strategy"></a>
인스턴스 새로 고침에 사용할 전략입니다. 유효 값은 `Rolling` 및 `ReplaceRootVolume`입니다. `ReplaceRootVolume` 전략에 대한 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Replace root volumes during instance refresh](https://docs.aws.amazon.com/autoscaling/ec2/userguide/replace-root-volume.html)를 참조하세요.  
*유형*: 문자열  
*필수 항목 여부:* 예

`Preferences`  <a name="cfn-attributes-updatepolicy-instancerefresh-properties-preferences"></a>
인스턴스 새로 고침에 대한 기본 설정을 지정합니다. 인스턴스 워밍업 시간, 최소 및 최대 정상 백분율, 인스턴스가 `Standby` 상태이거나 스케일 인으로부터 보호되는 경우 Amazon EC2 Auto Scaling에서 사용하는 동작을 포함합니다. 다음과 같이 추가 기능을 활성화할 수도 있습니다.  
+ 체크포인트
+ CloudWatch 경보
+ 매칭 건너뛰기
+ 베이크 소요 시간
*유형*: [Preferences](#cfn-attributes-updatepolicy-instancerefresh-preferences)  
*필수 항목 여부*: 아니요

### Preferences
<a name="cfn-attributes-updatepolicy-instancerefresh-preferences"></a>

`AlarmSpecification`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-alarmspecification"></a>
CloudWatch 경보 사양. CloudWatch 경보를 사용하여 인스턴스 새로 고침 중에 발생하는 문제를 식별하고 경보 임계치를 충족하면 스택을 롤백할 수 있습니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Start an instance refresh with auto rollback](https://docs.aws.amazon.com/autoscaling/ec2/userguide/instance-refresh-rollback.html#instance-refresh-using-auto-rollback)을 참조하세요.  
*유형*: [AlarmSpecification](#cfn-attributes-updatepolicy-instancerefresh-alarmspecification)  
*필수 항목 여부*: 아니요

`BakeTime`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-baketime"></a>
인스턴스 새로 고침을 완료로 간주하기 전에, 인스턴스 새로 고침 종료 시점에서 기다려야 하는 시간입니다.  
*기본값*: `0`  
*최소*: `0`  
*최대*: `172800`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`CheckpointDelay`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-checkpointdelay"></a>
계속하기 전에 체크포인트 후 기다리는 시간(초)입니다. `CheckpointPercentages`에 대한 값을 지정하지만 `CheckpointDelay`에 대한 값을 지정하지 않은 경우 `CheckpointDelay`의 기본값은 `3600`(1시간)입니다.  
*최소*: `0`  
*최대*: `172800`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`CheckpointPercentages`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-checkpointpercentages"></a>
각 체크포인트의 임계치로, 오름차순으로 표시합니다. 각 숫자는 고유해야 합니다. Auto Scaling 그룹의 모든 인스턴스를 바꾸려면 배열의 마지막 숫자가 `100`이어야 합니다. 사용 예제는 *Amazon EC2 Auto Scaling 사용자 가이드*의 [Add checkpoints to an instance refresh](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-adding-checkpoints-instance-refresh.html)를 참조하세요.  
*유형*: List of integers  
*필수 항목 여부*: 아니요

`InstanceWarmup`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-instancewarmup"></a>
새 인스턴스가 `InService` 상태가 된 후 다음 인스턴스 대체를 진행하기 전에 인스턴스 새로 고침이 기다리는 기간(초)입니다.  
`InstanceWarmup`을 지정하지 않으면 Auto Scaling은 `DefaultInstanceWarmup` 속성 값을 대신 사용합니다. 모든 사용 사례에서 `DefaultInstanceWarmup`에 대한 값을 설정하는 것이 좋습니다.  
두 속성 중 하나에 대한 값을 지정하지 않은 경우 Auto Scaling은 `HealthCheckGracePeriod` 속성의 값을 사용합니다.  
*유형*: 정수  
*필수 항목 여부*: 아니요

`MaxHealthyPercentage`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-maxhealthypercentage"></a>
인스턴스를 바꾸는 경우 워크로드를 지원하기 위해 서비스 중, 정상 또는 보류 중 상태일 수 있는 그룹의 최대 비율을 지정합니다. 이 값은 Auto Scaling 그룹의 원하는 용량에 대한 백분율로 표시됩니다. `MaxHealthyPercentage`를 지정하는 경우 `MinHealthyPercentage`도 지정해야 하며, 둘의 차이는 100보다 클 수 없습니다. 범위가 증가할 수록 동시에 바꿀 수 있는 인스턴스의 수가 늘어납니다.  
*기본값*: 정의된 경우 Auto Scaling 그룹의 인스턴스 유지 관리 정책에 설정된 값입니다. 그렇지 않으면 `Strategy`가 `Rolling`인 경우 `110`, `Strategy`가 `ReplaceRootVolume`인 경우 `100`입니다.  
*최소*: `100`  
*최대*: `200`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`MinHealthyPercentage`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-minhealthypercentage"></a>
작업을 계속 진행하도록 워크로드를 지원하기 위해 서비스 중, 정상 및 사용 준비 상태를 유지할 그룹의 최소 비율을 지정합니다. 이 값은 Auto Scaling 그룹의 원하는 용량에 대한 백분율로 표시됩니다.  
*기본값*: 정의된 경우 Auto Scaling 그룹의 인스턴스 유지 관리 정책에 설정된 값입니다. 그렇지 않으면 `Strategy`가 `Rolling`인 경우 `100`, `Strategy`가 `ReplaceRootVolume`인 경우 `90`입니다.  
*최소*: `0`  
*최대*: `100`  
*유형*: 정수  
*필수 항목 여부*: 아니요

`ScaleInProtectedInstances`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-scaleinprotectedinstances"></a>
스케일 인에서 보호되는 인스턴스가 검색되는 경우 Amazon EC2 Auto Scaling에서 사용할 동작을 선택합니다. 다음은 유효한 값 목록입니다.  
+ *Refresh*: Amazon EC2 Auto Scaling은 스케일 인으로부터 보호되는 인스턴스를 바꿉니다.
+ *Ignore*: Amazon EC2 Auto Scaling은 스케일 인으로부터 보호되는 인스턴스를 무시하고 보호되지 않는 인스턴스를 계속 바꿉니다.
+ *Wait*: Amazon EC2 Auto Scaling은 1시간 동안 스케일 인 보호를 제거하기를 기다립니다. 그렇지 않으면 인스턴스 새로 고침에 실패합니다.
*기본값*: `Wait`  
*유형*: 문자열  
*필수 항목 여부*: 아니요

`SkipMatching`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-skipmatching"></a>
일치 항목 건너뛰기가 활성화되었는지를 나타냅니다. 활성화된 경우(`true`) Auto Scaling은 스택 템플릿에 지정된 구성과 이미 일치하는 인스턴스 바꾸기를 건너뜁니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Use an instance refresh with skip matching](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh-skip-matching.html)을 참조하세요.  
*기본값*: `true`  
*유형*: 부울  
*필수 항목 여부*: 아니요

`StandbyInstances`  <a name="cfn-attributes-updatepolicy-instancerefresh-preferences-standbyinstances"></a>
`Standby` 상태에 있는 인스턴스가 검색되는 경우 Amazon EC2 Auto Scaling에서 사용할 동작을 선택합니다. 다음은 유효한 값 목록입니다.  
+ *Terminate*: Amazon EC2 Auto Scaling은 `Standby`에 있는 인스턴스를 종료합니다.
+ *Ignore*: Amazon EC2 Auto Scaling은 `Standby` 상태의 인스턴스를 무시하고 `InService` 상태의 인스턴스를 계속 바꿉니다.
+ *Wait*: Amazon EC2 Auto Scaling은 1시간 동안 인스턴스를 서비스 상태로 되돌리기를 기다립니다. 그렇지 않으면 인스턴스 새로 고침에 실패합니다.
*기본값*: `Wait`  
*유형*: 문자열  
*필수 항목 여부*: 아니요

### AlarmSpecification
<a name="cfn-attributes-updatepolicy-instancerefresh-alarmspecification"></a>

`Alarms`  <a name="cfn-attributes-updatepolicy-instancerefresh-alarmspecification-alarms"></a>
인스턴스 새로 고침을 모니터링할 하나 이상의 CloudWatch 경보의 이름입니다. 최대 10개의 경보를 지정할 수 있습니다.  
*유형:* 문자열 목록  
*필수 항목 여부*: 아니요

### 인스턴스 새로 고침 중 인스턴스 준비 상태 확인
<a name="cfn-attributes-updatepolicy-instancerefresh-readiness"></a>

기본적으로 새로 시작된 인스턴스가 Auto Scaling 그룹에 구성된 상태 확인을 통과하면 인스턴스 새로 고침은 자동으로 다음 인스턴스 세트로 진행됩니다. 여기에는 Amazon EC2 상태 확인 및 구성된 경우 Elastic Load Balancing 상태 확인이 포함됩니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Auto Scaling 그룹의 인스턴스 상태 확인](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) 섹션을 참조하세요.

`InService`로 이동하기 전에 인스턴스에 애플리케이션 부트스트래핑이 필요한 경우 Auto Scaling 그룹에 `autoscaling:EC2_INSTANCE_LAUNCHING` 수명 주기 후크를 추가합니다. 인스턴스 새로 고침은 수명 주기 후크가 완료될 때까지 기다렸다가 다음 인스턴스 세트로 진행합니다. `CompleteLifecycleAction` API를 직접 호출하여 후크를 완료합니다. 시작 템플릿 사용자 데이터 스크립트를 사용하여 인스턴스 자체에서 또는 외부 서비스에서 이 직접 호출을 수행할 수 있습니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) 및 [Complete a lifecycle action in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/completing-lifecycle-hooks.html)을 참조하세요.

## AutoScalingScheduledAction 정책
<a name="cfn-attributes-updatepolicy-scheduledactions"></a>

`AWS::AutoScaling::AutoScalingGroup` 리소스에 예약된 작업이 연결되어 있는 경우 CloudFormation에서 `MinSize`, `MaxSize` 및 `DesiredCapacity` 속성 업데이트를 처리하는 방법을 지정하려면 `AutoScalingScheduledAction` 정책을 사용합니다.

Auto Scaling 그룹의 그룹 크기 속성은 예약된 작업을 통해 언제든지 변경할 수 있습니다. Auto Scaling 그룹 및 예약된 작업을 사용하여 스택을 업데이트할 때 예약된 작업이 적용되더라도 CloudFormation은 항상 Auto Scaling 그룹의 그룹 크기 속성값을 템플릿의 `AWS::AutoScaling::AutoScalingGroup` 리소스에 정의된 값으로 설정합니다.

예약된 작업이 적용되는 경우 CloudFormation이 그룹 크기 속성값을 변경하지 않도록 하려면 `AutoScalingScheduledAction` 업데이트 정책을 사용하고 `IgnoreUnmodifiedGroupSizeProperties`를 `true`로 설정하여 사용자가 템플릿에서 `MinSize`, `MaxSize` 또는 `DesiredCapacity` 속성값을 수정하지 않는 한 CloudFormation에서 이러한 값을 변경하지 않도록 합니다.



### 구문
<a name="cfn-attributes-updatepolicy-scheduledactions-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-scheduledactions-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingScheduledAction" : {
    "IgnoreUnmodifiedGroupSizeProperties" : {{Boolean}}
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-scheduledactions-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingScheduledAction:
    IgnoreUnmodifiedGroupSizeProperties: {{Boolean}}
```

### 속성
<a name="cfn-attributes-updatepolicy-scheduledactions-properties"></a>

`IgnoreUnmodifiedGroupSizeProperties`  <a name="cfn-attributes-updatepolicy-scheduledactions-ignoreunmodifiedgroupsizeproperties"></a>
`true`이면 CloudFormation에서 스택 업데이트 중 현재 Auto Scaling 그룹과 템플릿의 `AWS::AutoScaling::AutoScalingGroup` 리소스에 설명된 Auto Scaling 그룹 간의 그룹 크기 속성 차이를 무시합니다. 템플릿에서 그룹 크기 속성값을 수정하면 CloudFormation은 수정된 값을 사용하고 Auto Scaling 그룹을 업데이트합니다.  
스택 롤백 중에는 이 속성이 무시됩니다.
*기본값*: `false`  
*유형*: 부울  
*필수 항목 여부*: 아니요

## UseOnlineResharding 정책
<a name="cfn-attributes-updatepolicy-useonlineresharding"></a>

전체 [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) 리소스를 대체하는 대신 샤드를 추가 또는 제거함으로써 복제 그룹의 샤드를 수정하려면 `UseOnlineResharding` 업데이트 정책을 사용합니다.

`UseOnlineResharding`이 `true`로 설정된 경우 `AWS::ElastiCache::ReplicationGroup` 리소스의 `NumNodeGroups` 및 `NodeGroupConfiguration` 속성을 업데이트할 수 있고, CloudFormation에서는 중단 없이 이러한 속성을 업데이트합니다. `UseOnlineResharding`이 `false`로 설정되거나 지정되지 않은 경우 `NumNodeGroups` 및 `NodeGroupConfiguration` 속성을 업데이트하면 CloudFormation에서 전체 `AWS::ElastiCache::ReplicationGroup` 리소스를 교체합니다.

`UseOnlineResharding` 업데이트 정책에는 속성이 없습니다.

`UseOnlineResharding` 업데이트 정책을 `true`로 설정할 때 고려해야 할 사항은 다음과 같습니다.
+ 해당 스택 업데이트 작업의 유일한 업데이트로 `NumNodeGroups` 및 `NodeGroupConfiguration` 속성에 대한 업데이트를 수행하는 것이 좋습니다.

  복제 그룹의 노드 그룹 구성 업데이트는 리소스 집약적 작업입니다. 스택 업데이트가 실패하는 경우 CloudFormation에서는 복제 그룹의 노드 그룹 구성에 대한 변경 사항을 롤백하지 않습니다. 하지만 CloudFormation에서 실패한 업데이트 작업의 일부분으로 변경된 나머지 속성을 롤백합니다.
+ 노드 그룹을 업데이트하려면 모든 노드 그룹을 식별해야 합니다.

  `NodeGroupConfiguration` 속성을 지정하는 경우 CloudFormation에서 중단 없이 노드 수를 업데이트하도록 각 노드 그룹 구성에 대한 NodeGroupId 또한 지정해야 합니다.

  복제 그룹 생성 시 각 노드 그룹에 대한 ID를 지정하지 않는 경우 ElastiCache에서 자동으로 각 노드 그룹에 대한 ID를 생성합니다. 중단 없이 복제 그룹을 업데이트하려면 ElastiCache 콘솔([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) 또는 [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)를 사용하여 복제 그룹의 모든 노드 그룹에 대한 ID를 검색합니다. 그런 다음 샤드 추가 또는 제거 시도 전에 스택 템플릿의 각 노드 그룹에 대한 ID를 지정합니다.
**참고**  
스택 템플릿에 복제 그룹을 생성할 때 지정한 각 노드 그룹에 대한 ID를 포함시키는 것이 모범 사례입니다.

  추가로 중단 없이 노드 수를 업데이트하려면 각 `NodeGroupConfiguration`에 대한 `PrimaryAvailabilityZone`, `ReplicaAvailabilityZones` 및 `ReplicaCount` 속성을 정확히 지정해야 합니다. 다시 한 번 ElastiCache 콘솔([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) 또는 [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)를 사용하여 각 노드 그룹에 대한 실제 값을 검색하고 이를 스택 템플릿의 값과 비교할 수 있습니다. 별도의 스택 업데이트로, 또는 노드 그룹의 수를 변경하는 동일한 스택 업데이트의 일부분으로 노드 그룹의 속성값을 업데이트할 수 있습니다.

  중단 없이 노드 그룹의 수를 업데이트하기 위해 `UseOnlineResharding` 업데이트 정책을 사용할 때 ElastiCache에서는 지정된 수의 슬롯 사이에 키스페이스를 균등하게 분산합니다. 이는 나중에 업데이트할 수 없습니다. 따라서 이러한 방식으로 노드 그룹의 수를 업데이트한 이후 스택 템플릿에서 각 `NodeGroupConfiguration`의 `Slots` 속성에 지정된 값을 제거해야 합니다. 더 이상 각 노드 그룹의 실제 값을 반영하지 않기 때문입니다.
+ 실제 노드 그룹 제거 결과는 다를 수 있습니다.

  현재 노드 그룹의 수보다 작은 `NumNodeGroups` 값을 지정하는 경우 CloudFormation에서는 ElastiCache에 지정된 노드 수에 도달하는 데 필요한 만큼 노드 그룹을 제거하도록 지시합니다. 하지만 ElastiCache에서 항상 원하는 수의 노드 그룹을 제거할 수는 없습니다. ElastiCache에서 원하는 수의 노드 그룹을 제거할 수 없는 경우 CloudFormation에서는 스택 이벤트를 생성하여 이를 사용자에게 알립니다. ElastiCache에서 노드 그룹을 *전혀* 제거할 수 없는 경우 CloudFormation 리소스 업데이트는 실패합니다.

복제 그룹 수정에 대한 자세한 내용을 알아보려면 *Amazon ElastiCache API 참조*의 [ModifyReplicationGroupShardConfiguration](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)을 참조하세요.

### 구문
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax"></a>

#### JSON
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax.json"></a>

```
"UpdatePolicy" : {
  "UseOnlineResharding" : {{Boolean}}
}
```

#### YAML
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax.yaml"></a>

```
UpdatePolicy:
  UseOnlineResharding: {{Boolean}}
```

## EnableVersionUpgrade 정책
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain"></a>

전체 [AWS::OpenSearchService::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opensearchservice-domain.html) 또는 [AWS::Elasticsearch::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html) 리소스를 대체하지 않고 OpenSearch Service 도메인을 새 버전의 OpenSearch 또는 Elasticsearch로 업그레이드하려면 `EnableVersionUpgrade` 업데이트 정책을 사용합니다.

`EnableVersionUpgrade`가 `true`로 설정된 경우 `AWS::OpenSearchService::Domain` 리소스의 `EngineVersion` 속성이나 레거시 `AWS::Elasticsearch::Domain` 리소스의 `ElasticsearchVersion` 속성을 업데이트할 수 있으며 CloudFormation는 중단 없이 해당 속성을 업데이트합니다. `EnableVersionUpgrade`가 `false`로 설정되거나 지정되지 않은 경우 `EngineVersion` 속성 `ElasticsearchVersion` 속성을 업데이트하면 CloudFormation에서 전체 `AWS::OpenSearchService::Domain`/`AWS::Elasticsearch::Domain` 리소스가 대체됩니다.

`EnableVersionUpgrade` 업데이트 정책에는 속성이 없습니다.

자세한 내용은 Amazon OpenSearch Service 개발자 안내서의 [OpenSearch Service 도메인 업그레이트](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/version-migration.html)를 참조하세요.

### 구문
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax"></a>

#### JSON
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax.json"></a>

```
"UpdatePolicy" : {
  "EnableVersionUpgrade" : {{Boolean}}
}
```

#### YAML
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax.yaml"></a>

```
UpdatePolicy:
  EnableVersionUpgrade: {{Boolean}}
```

## CodeDeployLambdaAliasUpdate 정책
<a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate"></a>

`AWS::Lambda::Alias` 리소스 버전이 변경될 때 CodeDeploy 배포 작업을 수행하려면 `CodeDeployLambdaAliasUpdate` 업데이트 정책을 사용하십시오.

### 구문
<a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "CodeDeployLambdaAliasUpdate" : {
    "AfterAllowTrafficHook" : {{String}},
    "ApplicationName" : {{String}},
    "BeforeAllowTrafficHook" : {{String}},
    "DeploymentGroupName" : {{String}}
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-syntax.yaml"></a>

```
UpdatePolicy:
  CodeDeployLambdaAliasUpdate:
    AfterAllowTrafficHook: {{String}}
    ApplicationName: {{String}}
    BeforeAllowTrafficHook: {{String}}
    DeploymentGroupName: {{String}}
```

### 속성
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-properties"></a>

`AfterAllowTrafficHook`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-afterallowtraffichook"></a>
트래픽 라우팅이 완료된 후 실행시킬 Lambda 함수의 이름.  
*필수 항목 여부*: 아니요  
*유형*: 문자열

`ApplicationName`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-applicationname"></a>
CodeDeploy 애플리케이션의 이름.  
*필수 항목 여부*: 예  
*유형*: 문자열

`BeforeAllowTrafficHook`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-beforeallowtraffichook"></a>
트래픽 라우팅 시작 전에 실행시킬 Lambda 함수의 이름.  
*필수 항목 여부*: 아니요  
*유형*: 문자열

`DeploymentGroupName`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-deploymentgroupname"></a>
CodeDeploy 배포 그룹의 이름. 트래픽 전환 정책을 설정하는 장소입니다.  
필수 항목 여부**: 예  
*유형*: 문자열

`AWS::Lambda::Alias` 리소스의 `UpdatePolicy` 속성을 지정하는 방법에 대한 예제는 [Lambda 별칭 업데이트 정책](#aws-resource-lambda-alias-example) 섹션을 참조하세요.

## 예제
<a name="aws-attribute-updatepolicy-examples"></a>

다음 예제에서는 Auto Scaling 그룹에 업데이트 정책을 추가하는 방법과 메타데이터 업데이트 시 가용성 유지 관리 방법을 보여줍니다.

### auto scaling에 `UpdatePolicy` 추가
<a name="aws-attribute-updatepolicy-example-1"></a>

다음 예에서는 업데이트 정책을 추가하는 방법을 보여 줍니다. 업데이트 중 Auto Scaling 그룹은 인스턴스를 두 개씩 한 배치로 업데이트하고 최소 한 개의 인스턴스는 계속 작동하도록 합니다. `WaitOnResourceSignals` 플래그가 설정되었으므로 Auto Scaling 그룹에서는 그룹에 추가된 새 인스턴스를 대기합니다. 새 인스턴스는 Auto Scaling 그룹이 인스턴스의 다음 배치를 업데이트하기 전에 해당 그룹에 신호를 보내야 합니다.

#### JSON
<a name="attribute-updatepolicy-example-1.json"></a>

```
"ASG" : {
  "Type":"AWS::AutoScaling::AutoScalingGroup",
  "Properties":{
    "VPCZoneIdentifier":[ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
    "LaunchTemplate":{
      "LaunchTemplateId":{
        "Ref":"{{logicalName}}"
      },
      "Version":{
        "Fn::GetAtt":[
          "{{logicalName}}",
          "LatestVersionNumber"
        ]
      }
    },
    "MaxSize":"4",
    "MinSize":"1"
  },
  "UpdatePolicy":{
    "AutoScalingScheduledAction":{
      "IgnoreUnmodifiedGroupSizeProperties":"true"
    },
    "AutoScalingRollingUpdate":{
      "MinInstancesInService":"1",
      "MaxBatchSize":"2",
      "WaitOnResourceSignals":"true",
      "PauseTime":"PT10M",
      "SuspendProcesses":[
        "HealthCheck",
        "ReplaceUnhealthy",
        "AZRebalance",
        "AlarmNotification",
        "ScheduledActions",
        "InstanceRefresh"
      ]
    }
  }
}
```

#### YAML
<a name="attribute-updatepolicy-example-1.yaml"></a>

```
ASG:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    VPCZoneIdentifier:
      - {{subnetIdAz1}}
      - {{subnetIdAz2}}
      - {{subnetIdAz3}}
    LaunchTemplate:
      LaunchTemplateId: !Ref {{logicalName}}
      Version: !GetAtt {{logicalName}}.LatestVersionNumber
    MaxSize: '4'
    MinSize: '1'
  UpdatePolicy:
    AutoScalingScheduledAction:
      IgnoreUnmodifiedGroupSizeProperties: 'true'
    AutoScalingRollingUpdate:
      MinInstancesInService: '1'
      MaxBatchSize: '2'
      WaitOnResourceSignals: 'true'
      PauseTime: PT10M
      SuspendProcesses:
        - HealthCheck
        - ReplaceUnhealthy
        - AZRebalance
        - AlarmNotification
        - ScheduledActions
        - InstanceRefresh
```

### AutoScalingReplacingUpdate 정책
<a name="attribute-updatepolicy-AutoScalingReplacingUpdate"></a>

다음 예에서는 연결된 Auto Scaling 그룹이 업데이트 중 대체되도록 강제하는 정책을 선언합니다. 업데이트에 성공하려면 (`MinSuccessfulPercentParameter` 파라미터로 지정된) 비율의 인스턴스가 `Timeout` 기간 내에 성공 신호를 보내야 합니다.

#### JSON
<a name="attribute-updatepolicy-example-2.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingReplacingUpdate" : {
    "WillReplace" : true
  }
},
"CreationPolicy" : {
  "ResourceSignal" : {
    "Count" : { "Ref" : "ResourceSignalsOnCreate"},
    "Timeout" : "PT10M"
  },
  "AutoScalingCreationPolicy" : {
    "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" }
  }
}
```

#### YAML
<a name="attribute-updatepolicy-example-2.yaml"></a>

```
UpdatePolicy:
  AutoScalingReplacingUpdate:
    WillReplace: true
CreationPolicy:
  ResourceSignal:
    Count: !Ref 'ResourceSignalsOnCreate'
    Timeout: PT10M
  AutoScalingCreationPolicy:
    MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
```

### AutoScalingInstanceRefresh 정책
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh"></a>

다음 예제에서는 `AutoScalingInstanceRefresh` 정책의 두 가지 공통 구성을 보여줍니다. 첫 번째 예제에서는 launch-before-terminate를 사용하여 새로 고침 중에 용량을 유지 관리합니다. 두 번째 예제에서는 배포로 인해 문제가 발생하는 경우 CloudWatch 경보를 사용하여 스택을 롤백합니다.

#### Launch-before-terminate 새로 고침
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-lbt"></a>

다음 예제에서는 launch-before-terminate를 사용하는 `AutoScalingInstanceRefresh` 정책을 선언합니다. `MinHealthyPercentage`를 `100`으로 설정하면 기존 인스턴스를 종료하기 전에 새 인스턴스가 시작되고 `MaxHealthyPercentage`를 `200`으로 설정하면 그룹의 크기가 일시적으로 두 배로 늘어납니다. 또한 이 정책은 구성과 이미 일치하는 인스턴스를 건너뜁니다.

##### JSON
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-lbt.json"></a>

```
"ASG" : {
  "Type" : "AWS::AutoScaling::AutoScalingGroup",
  "Properties" : {
    "VPCZoneIdentifier" : [ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
    "LaunchTemplate" : {
      "LaunchTemplateId" : { "Ref" : "{{logicalName}}" },
      "Version" : { "Fn::GetAtt" : [ "{{logicalName}}", "LatestVersionNumber" ] }
    },
    "MaxSize" : "4",
    "MinSize" : "1"
  },
  "UpdatePolicy" : {
    "AutoScalingInstanceRefresh" : {
      "Strategy" : "Rolling",
      "Preferences" : {
        "MinHealthyPercentage" : 100,
        "MaxHealthyPercentage" : 200,
        "SkipMatching" : true
      }
    }
  }
}
```

##### YAML
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-lbt.yaml"></a>

```
ASG:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    VPCZoneIdentifier:
      - {{subnetIdAz1}}
      - {{subnetIdAz2}}
      - {{subnetIdAz3}}
    LaunchTemplate:
      LaunchTemplateId: !Ref {{logicalName}}
      Version: !GetAtt {{logicalName}}.LatestVersionNumber
    MaxSize: '4'
    MinSize: '1'
  UpdatePolicy:
    AutoScalingInstanceRefresh:
      Strategy: Rolling
      Preferences:
        MinHealthyPercentage: 100
        MaxHealthyPercentage: 200
        SkipMatching: true
```

#### 경보 기반 롤백과 함께 새로 고침
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-alarm"></a>

다음 예제에서는 체크포인트, 경보 기반 롤백 및 베이크 소요 시간과 함께 `AutoScalingInstanceRefresh` 정책을 선언합니다. Auto Scaling은 각 체크포인트에서 5분 동안 일시 중지되고, 완료 후 10분을 기다린 후 성공을 선언합니다.

##### JSON
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-alarm.json"></a>

```
"ASG" : {
  "Type" : "AWS::AutoScaling::AutoScalingGroup",
  "Properties" : {
    "VPCZoneIdentifier" : [ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
    "LaunchTemplate" : {
      "LaunchTemplateId" : { "Ref" : "{{logicalName}}" },
      "Version" : { "Fn::GetAtt" : [ "{{logicalName}}", "LatestVersionNumber" ] }
    },
    "MaxSize" : "4",
    "MinSize" : "1"
  },
  "UpdatePolicy" : {
    "AutoScalingInstanceRefresh" : {
      "Strategy" : "Rolling",
      "Preferences" : {
        "CheckpointPercentages" : [ 33, 66, 100 ],
        "CheckpointDelay" : 300,
        "BakeTime" : 600,
        "AlarmSpecification" : {
          "Alarms" : [ "{{my-cloud-watch-alarm}}" ]
        }
      }
    }
  }
}
```

##### YAML
<a name="attribute-updatepolicy-AutoScalingInstanceRefresh-alarm.yaml"></a>

```
ASG:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    VPCZoneIdentifier:
      - {{subnetIdAz1}}
      - {{subnetIdAz2}}
      - {{subnetIdAz3}}
    LaunchTemplate:
      LaunchTemplateId: !Ref {{logicalName}}
      Version: !GetAtt {{logicalName}}.LatestVersionNumber
    MaxSize: '4'
    MinSize: '1'
  UpdatePolicy:
    AutoScalingInstanceRefresh:
      Strategy: Rolling
      Preferences:
        CheckpointPercentages:
          - 33
          - 66
          - 100
        CheckpointDelay: 300
        BakeTime: 600
        AlarmSpecification:
          Alarms:
            - {{my-cloud-watch-alarm}}
```

### cfn-init 헬퍼 스크립트에 대한 메타데이터 업데이트 시 가용성 유지 관리
<a name="aws-attribute-updatepolicy-cfn-init-metadata"></a>

인스턴스에 소프트웨어 애플리케이션을 설치할 때 [`AWS::CloudFormation::Init`](aws-resource-init.md) 메타데이터 키와 [cfn-init](cfn-init.md) 헬퍼 스크립트를 사용하여 auto scaling의 인스턴스를 부트스트랩할 수 있습니다. CloudFormation은 패키지를 설치하고, 명령을 실행하고, 메타데이터에 설명된 기타 부트스트랩 작업을 수행합니다.

메타데이터만 업데이트하는 경우(예: 패키지를 다른 버전으로 업데이트하는 경우) [cfn-hup](cfn-hup.md) 헬퍼 데몬을 사용하여 업데이트를 감지해 적용할 수 있습니다. 그러나 `cfn-hup` 데몬은 각 인스턴스에서 독립적으로 실행됩니다. 이 데몬이 모든 인스턴스에서 동시에 실행되면 업데이트 중 애플리케이션 또는 서비스를 사용하지 못할 수 있습니다. 가용성을 보장하기 위해 CloudFormation이 인스턴스를 한 번에 한 배치씩 업데이트하도록 롤링 업데이트를 강제 적용할 수 있습니다.

**중요**  
롤링 업데이트를 강제 적용하려면 CloudFormation에서 새 인스턴스를 생성한 다음 이전 인스턴스를 삭제해야 합니다. 이전 인스턴스에 저장된 모든 정보는 손실됩니다.

롤링 업데이트를 강제 실행하려면 시작 구성 리소스의 논리적 ID를 변경한 다음 스택과 원본 로직 ID(예: 연결된 auto scaling)를 가리키는 참조를 업데이트합니다. CloudFormation은 auto scaling에 대한 롤링 업데이트를 트리거하여 모든 인스턴스를 대체합니다.

### 원본 템플릿
<a name="aws-attribute-updatepolicy-cfn-init-metadata-original"></a>

```
"LaunchConfig": {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {
    "Comment" : "Install a simple PHP application",
    "AWS::CloudFormation::Init" : {
    ...
    }
  }
}
```

### 업데이트된 논리적 ID
<a name="aws-attribute-updatepolicy-cfn-init-metadata-updated"></a>

```
"LaunchConfigUpdateRubygemsPkg": {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {
    "Comment" : "Install a simple PHP application",
    "AWS::CloudFormation::Init" : {
    ...
    }
  }
}
```

### Lambda 별칭 업데이트 정책
<a name="aws-resource-lambda-alias-example"></a>

다음은 `UpdatePolicy` 리소스의 `AWS::Lambda::Alias` 속성을 지정하는 방법에 대한 예제입니다. 정책으로 전달되는 애플리케이션 및 배포 그룹이 배포와 관련된 모든 세부 정보를 정의합니다.

#### JSON
<a name="aws-attribute-updatepolicy-codedeploylambda.json"></a>

```
"Alias": {
  "Type": "AWS::Lambda::Alias",
  "Properties": {
    "FunctionName": {
      "Ref": "LambdaFunction"
    },
    "FunctionVersion": {
      "Fn::GetAtt": [
        "FunctionVersionTwo",
        "Version"
      ]
    },
    "Name": "MyAlias"
  },
  "UpdatePolicy": {
    "CodeDeployLambdaAliasUpdate": {
      "ApplicationName": {
        "Ref": "CodeDeployApplication"
      },
      "DeploymentGroupName": {
        "Ref": "CodeDeployDeploymentGroup"
      },
      "BeforeAllowTrafficHook": {
        "Ref": "PreHookLambdaFunction"
      },
      "AfterAllowTrafficHook": {
        "Ref": "PreHookLambdaFunction"
      }
    }
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-codedeploylambda-example.yaml"></a>

```
Alias:
  Type: AWS::Lambda::Alias
  Properties:
    FunctionName: !Ref LambdaFunction
    FunctionVersion: !GetAtt FunctionVersionTwo.Version
    Name: MyAlias
  UpdatePolicy:
    CodeDeployLambdaAliasUpdate:
      ApplicationName: !Ref CodeDeployApplication
      DeploymentGroupName: !Ref CodeDeployDeploymentGroup
      BeforeAllowTrafficHook: !Ref PreHookLambdaFunction
      AfterAllowTrafficHook: !Ref PreHookLambdaFunction
```