AWS CloudFormation 스택을 삭제할 때 일부 리소스를 유지하려면 어떻게 해야 하나요?

3분 분량
0

신규 또는 기존 AWS CloudFormation 스택을 삭제하고 싶지만 스택의 모든 리소스를 삭제하고 싶지는 않습니다.

간략한 설명

스택을 삭제할 때 특정 리소스를 유지하려면 CloudFormation 템플릿의 DeletionPolicy 속성을 사용하세요.

스택을 삭제하기 전에 유지하려는 각 리소스에 대해 유지, 스냅샷 또는 삭제 정책 옵션을 지정해야 합니다.

  • 유지 옵션은 스택이 삭제되는 경우에 대비하여 리소스를 유지합니다.
  • 스냅샷 옵션은 리소스가 삭제되기 전에 리소스의 스냅샷을 생성합니다.
    참고: 이 옵션은 스냅샷을 지원하는 리소스에만 사용할 수 있습니다.
  • 삭제 옵션은 스택과 함께 리소스를 삭제합니다.
    참고: 이 옵션은 DeletionPolicy를 설정하지 않은 경우의 기본 결과입니다.

해결 방법

다음 단계는 DeletionPolicy유지 옵션을 사용하여 CloudFormation 스택 삭제 중에 리소스가 삭제되는 것을 방지하는 방법을 보여줍니다.

AWS CloudFormation 템플릿에서 DeletionPolicy 속성 지정

CloudFormation 템플릿에서 유지하려는 리소스에 대한 DeletionPolicy유지를 입력합니다. 다음 예제 JSON 및 YAML 템플릿에서는 AWS::EC2::SecurityGroup 리소스에 대해 유지 정책이 지정되어 있습니다.

JSON:

{
  "Description": "AWS CloudFormation DeletionPolicy demo",
  "Resources": {
    "SGroup1": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup2": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup1Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup1"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    },
    "SGroup2Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup2"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    }
  }
}

YAML:

Description: AWS CloudFormation DeletionPolicy demo
Resources:
  SGroup1:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup2:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup1Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup1
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0
  SGroup2Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup2
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0

업데이트된 CloudFormation 템플릿 업로드

  1. AWS CloudFormation 콘솔을 엽니다.
  2. 새 스택의 경우 스택 생성을 선택합니다. 기존 스택의 경우 업데이트하려는 스택을 선택한 다음 스택 업데이트를 선택합니다.
  3. 템플릿 선택에서 Amazon S3에 템플릿 업로드를 선택한 다음 삭제 정책을 포함하도록 수정한 CloudFormation 템플릿을 선택합니다.
  4. 다음을 선택합니다.
  5. 새 스택을 생성하는 경우 스택 이름에 스택 이름을 입력한 후 다음을 선택합니다.
  6. 옵션 페이지에서 스택에 적합한 옵션을 선택한 후 다음을 선택합니다.
  7. 생성을 선택합니다.

DeletionPolicy 속성 테스트

  1. AWS CloudFormation 스택을 삭제합니다.
  2. 스택 삭제가 완료된 후에도 DeletionPolicy에 대한 유지 옵션이 있는 리소스를 계속 사용할 수 있는지 확인합니다. AWS Management Console 또는 AWS CLI를 사용하여 각 서비스의 리소스를 확인할 수 있습니다.

예를 들어, CloudFormation 스택을 삭제한 후 다음 단계를 사용하여 이전 템플릿에 대한 유지 정책의 성공 여부를 확인할 수 있습니다.

  1. Amazon EC2 콘솔을 엽니다.
  2. 네트워크 및 보안 섹션의 탐색 창에서 보안 그룹을 선택합니다.
  3. 유지 정책이 첨부된 보안 그룹을 계속 사용할 수 있는지 확인합니다.

관련 정보

AWS CloudFormation 콘솔에서 스택 생성

CloudFormation 스택의 리소스가 삭제되거나 업데이트되지 않도록 하려면 어떻게 해야 하나요?

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