DeletionPolicy 속성 - AWS CloudFormation

DeletionPolicy 속성

DeletionPolicy 속성을 사용하면 스택이 삭제될 때 리소스를 보존하고 경우에 따라 백업할 수 있습니다. 제어할 각 리소스에 대한 DeletionPolicy 속성을 지정합니다. 리소스에 DeletionPolicy 속성이 없는 경우 AWS CloudFormation은 기본적으로 리소스를 삭제합니다.

스택에서 리소스를 삭제하는 리소스를 제거하는 스택 업데이트 작업에도 이 기능이 적용됩니다. 예를 들어 스택 템플릿에서 리소스를 제거한 경우 템플릿을 포함한 스택을 업데이트합니다. 이 기능은 스택 업데이트 작업 도중 물리적 인스턴스가 교체되지 않은 리소스에는 적용되지 않습니다. 예를 들어 CloudFormation에서 스택 업데이트 도중 교체하는 리소스의 속성을 편집하는 경우가 있습니다.

참고

예외: 기본 정책은 AWS::RDS::DBCluster 리소스 및 DBClusterIdentifier 속성을 지정하지 않는 AWS::RDS::DBInstance 리소스의 경우 Snapshot입니다.

스택이 삭제될 때 리소스를 유지하려면 해당 리소스에 Retain을 지정합니다. 어떤 리소스에든 Retain을 사용할 수 있습니다. 예를 들어, 스택을 삭제한 후에도 해당 리소스를 계속해서 사용하거나 수정할 수 있도록 중첩 스택, Amazon S3 버킷 또는 EC2 인스턴스를 보관할 수 있습니다.

참고

CloudFormation 외부에서 리소스를 수정하려는 경우 Retain 삭제 정책을 사용한 다음 스택을 삭제합니다. 그렇지 않으면 리소스가 CloudFormation 템플릿과 동기화되지 않아서 스택 오류가 발생할 수 있습니다.

AWS::EC2::Volume과 같이 스냅샷을 지원하는 리소스의 경우 Snapshot을 지정하여 리소스를 삭제하기 전에 CloudFormation에서 스냅샷을 생성합니다.

다음 코드 조각에는 Retain 삭제 정책을 사용하는 Amazon S3 버킷 리소스가 포함되어 있습니다. 이 스택을 삭제하면 CloudFormation에서 버킷이 삭제되지 않고 그대로 유지됩니다.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain" } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: myS3Bucket: Type: AWS::S3::Bucket DeletionPolicy: Retain

DeletionPolicy 옵션

삭제

CloudFormation에서 스택 삭제 중에 해당되는 경우 모든 리소스와 모든 해당 콘텐츠가 삭제됩니다. 어떤 리소스 유형에든 이 삭제 정책을 추가할 수 있습니다. 기본적으로 DeletionPolicy를 지정하지 않으면 CloudFormation에서 리소스가 삭제됩니다. 그러나 다음 사항을 고려해야 합니다.

  • AWS::RDS::DBCluster 리소스의 기본 정책은 Snapshot입니다.

  • AWS::RDS::DBInstance 속성을 지정하지 않은 DBClusterIdentifier 리소스의 기본 정책은 Snapshot입니다.

  • Amazon S3 버킷의 경우 삭제에 성공하려면 버킷에 있는 모든 객체를 삭제해야 합니다.

참고

CloudFormation의 기본 동작은 ForceDeleteWithoutRecovery 플래그가 있는 보안 암호를 삭제하는 것입니다.

보관

CloudFormation에서 스택을 삭제하는 경우 리소스 또는 해당 콘텐츠가 삭제되지 않고 리소스가 유지됩니다. 어떤 리소스 유형에든 이 삭제 정책을 추가할 수 있습니다. CloudFormation에서 스택 삭제가 완료되면 스택은 Delete_Complete 상태가 됩니다. 하지만 보관된 리소스는 계속 존재하며 해당 리소스를 삭제할 때까지 적용 요금이 계속 발생합니다.

업데이트 작업의 경우 다음 고려 사항이 적용됩니다.

  • 리소스가 삭제되면 DeletionPolicy는 물리적 리소스를 유지하지만 CloudFormation의 범위에서 삭제되도록 합니다.

  • 이전 리소스를 대체하기 위해 새로운 물리적 리소스가 생성되도록 리소스가 업데이트되면 CloudFormation 범위를 포함하여 이전 리소스가 완전히 삭제됩니다.

RetainExceptOnCreate

처음에 리소스를 생성한 스택 작업을 제외하고 RetainExceptOnCreate는 스택 작업에 대해 Retain처럼 동작합니다. 리소스를 생성한 스택 작업이 롤백되는 경우 CloudFormation에서 해당 리소스를 삭제합니다. 스택 삭제와 같은 다른 모든 스택 작업의 경우 CloudFormation에서 리소스와 해당 콘텐츠를 보존합니다. 그 결과 비어 있고 사용되지 않는 새 리소스는 삭제되고 사용 중인 리소스와 해당 데이터는 유지됩니다. 템플릿을 업데이트하지 않고 이 삭제 정책을 API 파라미터로 사용하려면 UpdateStack API 설명서를 참조하세요.

스냅샷

스냅샷을 지원하는 리소스의 경우 CloudFormation에서는 리소스를 삭제하기 전에 리소스에 대한 스냅샷을 생성합니다. CloudFormation에서 스택 삭제가 완료되면 스택은 Delete_Complete 상태가 됩니다. 하지만 이 정책을 사용하여 생성된 스냅샷은 계속 존재하며 해당 스냅샷을 삭제할 때까지 적용 요금이 계속 발생합니다.

스냅샷을 지원하는 리소스는 다음과 같습니다.