인스턴스가 종료될 때 데이터 유지하기

인스턴스가 종료될 때 데이터 유지하기 (Preserve data when an instance is terminated)

Amazon EC2 인스턴스가 종료될 때 인스턴스 스토어 볼륨이나 Amazon EBS 볼륨의 데이터를 유지할 수 있어요. 인스턴스 종료를 넘어 데이터를 지속시키는 방법을 설명해요.

출처: 문서

본문

인스턴스 종료가 루트·데이터 볼륨에 미치는 영향 (How instance termination affects root and data volumes)

인스턴스 스토어 볼륨 (Instance store volumes)

인스턴스가 종료되면 인스턴스 스토어 볼륨이 자동으로 삭제되고 데이터가 손실돼요. 이 데이터를 인스턴스 수명을 넘어 유지하려면, 종료 전에 데이터를 Amazon EBS 볼륨, Amazon S3 버킷, Amazon EFS 파일 시스템 같은 영구 스토리지에 수동으로 복사해야 해요.

Amazon EBS 볼륨

인스턴스가 종료되면 EBS 볼륨은 각 볼륨의 DeleteOnTermination 속성 값에 따라 삭제되거나 유지돼요.

  • Yes(콘솔) / true(CLI) – 인스턴스가 종료될 때 볼륨이 삭제돼요.
  • No(콘솔) / false(CLI) – 인스턴스가 종료될 때 볼륨이 유지돼요. 유지된 볼륨은 계속 요금이 청구돼요.

참고: 인스턴스가 종료된 후에는 유지된 볼륨의 스냅샷을 찍거나 다른 인스턴스에 연결할 수 있어요. 요금이 발생하지 않게 하려면 볼륨을 삭제해야 해요.

EBS 볼륨의 기본 삭제 동작 (Default deletion behavior for EBS volumes)

기본 DeleteOnTermination 값은 볼륨 유형, 볼륨을 시작 시에 연결했는지 이후에 연결했는지, 연결에 사용한 방법(콘솔 또는 CLI)에 따라 달라요.

볼륨 유형 연결 시점 연결 방법 인스턴스 종료 시 기본 동작
루트 볼륨 시작 시 콘솔 또는 CLI 삭제
루트 볼륨 시작 후 콘솔 또는 CLI 유지
데이터 볼륨 시작 시 콘솔 유지
데이터 볼륨 시작 시 CLI 삭제
데이터 볼륨 시작 후 콘솔 및 CLI 유지

볼륨 유지 설정 확인하기 (Check volume persistence settings)

시작 시 EBS 볼륨의 기본값은 AMI에 설정된 DeleteOnTermination 속성으로 결정돼요. 인스턴스 시작 시 값을 변경해 AMI 설정을 덮어쓸 수 있어요. 인스턴스 시작 후 DeleteOnTermination 속성의 기본 설정을 확인할 것을 권장해요.

확인 방법: 콘솔에서 Instances를 선택하고 인스턴스를 선택한 뒤 Storage 탭을 선택해요. Block devices 아래에서 Delete on termination 열을 오른쪽으로 스크롤해 확인해요. Yes면 인스턴스 종료 시 볼륨이 삭제되고, No면 삭제되지 않으며 계속 요금이 발생할 수 있어요.

시작 시 루트 볼륨을 유지로 변경하기 (Change the root volume to persist at launch)

인스턴스 시작 시 EBS 루트 볼륨의 DeleteOnTermination 속성을 변경할 수 있어요. 이 절차는 데이터 볼륨에도 쓸 수 있어요.

콘솔: 인스턴스 시작 절차를 따르되, 루트 볼륨 유지 변경을 완료하기 전에는 시작하지 마세요. Configure storage 창에서 Advanced를 선택하고, EBS volumes 아래에서 루트 볼륨 정보를 펼치고, Delete on termination에서 No를 선택하고, Summary 패널에서 구성을 검토한 뒤 Launch instance를 선택해요.

AWS CLI: run-instances 명령으로 블록 디바이스 매핑에서 DeleteOnTermination 값을 변경해요. --block-device-mappings 옵션을 추가해요.

--block-device-mappings file://mapping.json

mapping.json에서 디바이스 이름(예: /dev/sda1 또는 /dev/xvda)을 지정하고 DeleteOnTermination에 false를 지정해요.

[
  {
    "DeviceName": "device_name",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]

PowerShell: New-EC2Instance cmdlet으로 블록 디바이스 매핑에서 DeleteOnTermination 값을 변경해요. -BlockDeviceMapping 옵션을 추가해요.

-BlockDeviceMapping $bdm

bdm에서 디바이스 이름을 지정하고 DeleteOnTermination에 false를 지정해요.

$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "/dev/sda1"
$bdm.Ebs = $ebd

실행 중인 인스턴스의 루트 볼륨을 유지로 변경하기 (Change the root volume of a running instance to persist)

실행 중인 인스턴스의 EBS 루트 볼륨을 유지로 변경할 수 있어요. 이 절차는 데이터 볼륨에도 쓸 수 있어요.

AWS CLI: modify-instance-attribute 명령을 사용해요.

aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0  \
    --block-device-mappings file://mapping.json

mapping.json에서 디바이스 이름을 지정하고 DeleteOnTermination에 false를 지정해요.

[
  {
    "DeviceName": "device_name",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]

PowerShell: Edit-EC2InstanceAttribute cmdlet을 사용해요. -BlockDeviceMapping 옵션을 추가해요.

-BlockDeviceMapping $bdm

bdm에서 디바이스 이름을 지정하고 DeleteOnTermination에 false를 지정해요.

$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "/dev/sda1"
$bdm.Ebs = $ebd

더 알아보기