

# 스택 리소스의 업데이트 동작 이해
<a name="using-cfn-updating-stacks-update-behaviors"></a>

업데이트를 제출하면 CloudFormation에서는 제출하는 내용과 스택의 현재 템플릿 간의 차이에 따라 리소스를 업데이트합니다. 변경되지 않은 리소스는 업데이트 프로세스 동안 중단 없이 실행됩니다. 업데이트한 리소스의 경우, CloudFormation에서는 다음 업데이트 동작 중 하나를 사용합니다.

**업데이트(무중단)**  <a name="update-no-interrupt"></a>
CloudFormation에서는 해당 리소스의 작동을 중단하지 않고 리소스의 물리적 ID를 변경하지 않는 상태에서 리소스를 업데이트합니다. 예를 들면 [AWS::CloudTrail::Trail](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudtrail-trail.html) 리소스에 대해 특정 속성을 업데이트하는 경우 CloudFormation에서 추적 파일이 중단 없이 업데이트됩니다.

**업데이트(중단)**  <a name="update-some-interrupt"></a>
CloudFormation이 리소스를 업데이트하지만, 다소 중단이 발생합니다. 예를 들면 [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) 리소스에 대해 특정 속성을 업데이트하는 경우 CloudFormation 및 Amazon EC2에서 인스턴스를 재구성하는 동안 해당 인스턴스가 중단될 수도 있습니다.

**대체**  <a name="update-replacement"></a>
CloudFormation에서는 업데이트 도중 리소스를 다시 생성하며, 이때 새 물리적 ID도 생성합니다. 일반적으로 CloudFormation에서는 리소스를 먼저 생성한 후, 대체 리소스를 가리키도록 다른 종속 리소스의 참조를 변경한 다음, 이전 리소스를 삭제합니다. 예를 들면 [AWS::EC2::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) 리소스 유형의 `AvailabilityZone` 속성을 업데이트하는 경우, CloudFormation에서는 새 리소스를 생성하고 현재의 EC2 인스턴스 리소스를 새 리소스로 대체합니다.  
교체가 필요한 속성을 추가하거나 제거하는 경우 업데이트도 트리거됩니다. 업데이트는 속성의 실제 값이 변경되지 않는 경우에도 발생합니다.

CloudFormation에서 사용하는 메서드는 해당 리소스 유형에 대해 업데이트하는 속성에 따라 달라집니다. 각 속성에 대한 업데이트 동작은 [AWS 리소스 및 속성 유형 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html)에 설명되어 있습니다.

업데이트 동작에 따라 이러한 변경 내용이 애플리케이션에 미치는 영향을 줄이도록 리소스를 수정해야 하는 경우를 설정할 수 있습니다. 특히 업데이트 중에 리소스를 *대체해야* 하는 경우를 계획할 수 있습니다. 예를 들면 [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) 리소스 유형의 `Port` 속성을 업데이트하는 경우, CloudFormation에서는 업데이트된 포트 설정을 사용하여 새 DB 인스턴스를 생성함으로써 DB 인스턴스를 대체하고 이전 DB 인스턴스를 삭제합니다. 업데이트를 수행하기 전에 다음을 수행하여 데이터베이스 대체를 준비할 계획을 세워야 합니다.
+ 현재 데이터베이스의 스냅샷을 생성합니다.
+ DB 인스턴스를 바꾸는 동안 해당 인스턴스를 사용하는 애플리케이션에서 중단을 처리할 방법에 대한 전략을 준비합니다.
+ 해당 DB 인스턴스를 사용하는 애플리케이션에서 업데이트된 포트 설정과 수행된 기타 업데이트를 고려하는지 확인합니다.
+ DB 스냅샷을 사용하여 새 DB 인스턴스에서 데이터베이스를 복원합니다.

이 예제는 포괄적이지 않지만, 업데이트 중에 리소스가 교체되는 경우를 대비하여 계획해야 할 사항을 알려주기 위한 목적으로 제공되었습니다.

**참고**  
템플릿에 하나 이상의 [중첩 스택](using-cfn-nested-stacks.md)이 포함되는 경우 CloudFormation에서는 모든 중첩 스택에 대해서도 업데이트를 시작합니다. 이 작업은 중첩된 스택이 수정되었는지 여부를 확인하기 위해 필요합니다. CloudFormation은 중첩된 스택에서 해당 템플릿에 지정된 변경 사항이 있는 리소스만 업데이트합니다.