내용으로 건너뛰기

EC2 인스턴스를 교체하지 않는 경우에도 CloudFormation에서 EBS 볼륨을 업데이트하려면 어떻게 해야 합니까?

2분 분량
0

AWS CloudFormation에서 Amazon Elastic Block Store(Amazon EBS) 볼륨을 업데이트하려고 합니다. 하지만 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 교체하고 싶지는 않습니다.

해결 방법

인스턴스 교체를 방지하려면 CloudFormation에서 EBS 볼륨을 업데이트할 때 AWS::EC2::Volume 리소스 유형을 사용하는 것이 좋습니다.

인스턴스 교체는 AWS::EC2::InstanceAWS::EC2::Template 리소스 유형의 BlockDeviceMappings 속성으로 볼륨을 지정할 때 발생합니다. 이 시나리오에서는 DeletionPolicy 유지 속성을 추가해야 합니다.

중요: 볼륨을 수동으로 수정(예: gp2에서 gp3으로)하는 경우 인스턴스에 연결된 볼륨도 수정해야 합니다. 인스턴스가 최적화 중 또는 수정 중 상태가 아닌지 확인하십시오. 볼륨을 gp3으로 수정하기 전에 볼륨 수정 요구 사항을 준수해야 합니다.

BlockDeviceMappings 속성으로 지정한 볼륨을 수정할 때 인스턴스가 교체되지 않도록 하려면 다음 단계를 완료하십시오.

대상 AWS::EC2::Instance 템플릿 리소스에 DeletionPolicy 유지 속성 추가

다음 단계를 완료하십시오.

  1. 볼륨의 스냅샷을 생성하여 중요 워크로드의 백업을 생성합니다.

  2. 업데이트하려는 볼륨이 있는 인스턴스의 CloudFormation 스택에서 DeletionPolicyRetain으로 설정합니다. 예를 들어 다음과 같습니다.

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
         Ebs:
          VolumeType: gp2
          VolumeSize: 10
          DeleteOnTermination: true
       EbsOptimized: false
       ImageId: ami-064ff912f78e3e561
       InstanceInitiatedShutdownBehavior: stop
       InstanceType: t2.micro
       Monitoring: false
  3. 스택을 업데이트합니다.

CloudFormation 스택에서 리소스를 제거하고 변경 사항 구현

다음 단계를 완료하십시오.

  1. 템플릿에서 인스턴스를 제거하여 CloudFormation 스택에서 인스턴스를 제거하지만 기본 리소스는 삭제하지 않습니다. 그런 다음, EC2 인스턴스를 수동으로 수정합니다.
    참고: 템플릿에 리소스가 하나뿐인 경우에는 또 다른 인스턴스 등과 같은 대체 리소스를 만들어야 합니다. EC2 인스턴스를 템플릿으로 다시 가져온 후 해당 템플릿에서 리소스를 삭제할 수 있습니다.
  2. EBS 볼륨 속성을 수정합니다.

리소스를 CloudFormation 스택으로 다시 가져오기

다음 단계를 완료하십시오.

  1. CloudFormation 콘솔을 엽니다.

  2. 탐색 창에서 스택을 선택합니다.

  3. 스택 작업을 선택한 다음, 리소스를 스택으로 가져오기를 선택합니다.

  4. 업데이트된 CloudFormation 템플릿을 입력합니다. 예를 들어 다음과 같습니다.

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
           VolumeType: gp3
           VolumeSize: 100
           DeleteOnTermination: true
        EbsOptimized: false
        ImageId: ami-064ff912f78e3e561
        InstanceInitiatedShutdownBehavior: stop
        InstanceType: t2.micro
        Monitoring: false

    참고: 리소스를 가져오려면 CloudFormation 템플릿이 기존 구성을 사용하여 리소스를 기술해야 합니다.

  5. 식별자에 인스턴스 ID를 입력합니다.

  6. 리소스 가져오기를 선택합니다.

CloudFormation이 상태를 IMPORT_COMPLETE로 업데이트하면 해당 인스턴스가 스택의 일부가 됩니다.

"There was an error creating this change set. As part of the import operation, you cannot modify or add [Outputs]" 오류 메시지가 표시될 수 있습니다. 이 문제를 해결하려면 최신 CloudFormation 템플릿의 출력 섹션이 스택에서 사용하는 템플릿과 일치하는지 확인하십시오. 동일하지 않은 경우 스택이 사용하는 템플릿의 출력 섹션에 있는 값과 일치하도록 최신 CloudFormation 템플릿을 업데이트합니다. 그런 다음, 스택을 다시 업데이트합니다.

AWS 공식업데이트됨 9달 전