인스턴스 종료 - Amazon Elastic Compute Cloud

인스턴스 종료

더 이상 필요하지 않은 인스턴스는 삭제할 수 있습니다. 이를 인스턴스 종료라고 합니다. 인스턴스 상태가 shutting-down 또는 terminated로 변경되는 즉시 해당 인스턴스에 대한 반복적인 요금 부과가 중단됩니다.

인스턴스를 종료한 후에는 그 인스턴스에 다시 연결하거나 재시작할 수 없습니다. 하지만 동일한 AMI를 사용해서 추가 인스턴스를 실행할 수 있습니다. 인스턴스를 중지했다가 다시 시작하거나 최대 절전 모드로 전환하면 인스턴스 중지 및 시작 또는 온디맨드 또는 예약 Linux 인스턴스를 최대 절전 모드로 전환 단원을 참조하십시오. 자세한 내용은 재부팅, 중지, 최대 절전 모드 및 종료의 차이 섹션을 참조하세요.

인스턴스 종료

인스턴스는 종료한 후에도 잠시 동안 콘솔에 표시되며 그 이후 항목이 자동으로 삭제됩니다. 종료된 인스턴스 항목을 사용자가 직접 삭제할 수는 없습니다. 인스턴스가 종료되면 태그 및 볼륨과 같은 리소스가 해당 인스턴스에서 점차 연결 해제되며, 조금 지나면 종료된 인스턴스에서 더 이상 보이지 않을 수 있습니다.

인스턴스가 종료하면 해당 인스턴스와 관련된 모든 인스턴스 스토어 볼륨의 데이터는 삭제됩니다.

기본적으로 Amazon EBS 루트 디바이스 볼륨은 인스턴스 종료 시 자동으로 삭제됩니다. 하지만 시작 시 연결하는 추가 EBS 볼륨 또는 기존 인스턴스에 연결하는 EBS 볼륨은 인스턴스가 종료된 후에도 기본적으로 유지됩니다. 이런 동작은 해당 볼륨의 DeleteOnTermination 속성에 의해 제어되며, 이러한 속성은 사용자가 변경할 수 있습니다. 자세한 내용은 인스턴스 종료 시 Amazon EBS 볼륨 보존 섹션을 참조하세요.

AWS Management Console, CLI, API를 사용하는 타인의 실수로 인스턴스가 종료되는 것을 방지할 수 있습니다 이 기능은 Amazon EC2 인스턴스 스토어 지원 및 Amazon EBS-지원 인스턴스에 대해 제공됩니다. 각 인스턴스는 DisableApiTermination 속성을 가지고 있으며 그 기본 값은 false로 설정되어 있습니다(해당 인스턴스는 Amazon EC2를 통해 종료할 수 있음). 인스턴스가 실행 중이거나 중단된 상태에 있을 때 이 인스턴스를 변경할 수 있습니다(Amazon EBS 지원 인스턴스의 경우). 자세한 내용은 종료 방지 기능 활성화 섹션을 참조하세요.

시스템 종료에 대한 운영 체제 명령을 사용해서 인스턴스에서 종료를 개시한 경우, 인스턴스가 중단 또는 종료되는 것을 사용자가 제어할 수 있습니다. 자세한 내용은 인스턴스가 시작하는 종료 동작 변경 섹션을 참조하세요.

인스턴스 종료에 대한 스크립트를 실행하는 경우 AWS에는 종료 스크립트의 실행을 보장할 방법이 없기 때문에 인스턴스가 비정상적으로 종료될 수 있습니다. Amazon EC2는 인스턴스를 완전히 종료하고 시스템 종료 스크립트를 실행하려고 시도합니다. 그러나 하드웨어 장애와 같은 특정 이벤트로 인해 이러한 시스템 종료 스크립트가 실행되지 않을 수 있습니다.

가용 영역 전반에 걸쳐 종료 방지를 사용하여 여러 인스턴스 종료

여러 가용 영역에서 여러 인스턴스를 종료할 때 지정한 인스턴스 중 하나 이상에 종료 방지가 활성화되어 있는 경우 요청이 실패하고 다음과 같은 결과가 발생합니다.

  • 보호된 인스턴스와 동일한 가용 영역에 있는 지정된 인스턴스가 종료되지 않습니다.

  • 지정된 인스턴스 중 보호된 인스턴스가 없는 다른 가용 영역의 지정된 인스턴스는 성공적으로 종료됩니다.

예를 들어 다음과 같은 인스턴스를 가정해 보겠습니다.

인스턴스 가용 영역 종료 방지
인스턴스 A us-east-1a Disabled
인스턴스 B Disabled
인스턴스 C us-east-1b Enabled
인스턴스 D Disabled

동일한 요청에서 이러한 모든 인스턴스를 종료하려고 하면 요청이 실패하고 다음과 같은 결과가 나타납니다.

  • us-east-1a의 지정된 인스턴스 중 종료 방지가 활성화된 인스턴스가 없기 때문에 인스턴스 A인스턴스 B는 성공적으로 종료됩니다.

  • us-east-1b의 지정된 인스턴스스 중 하나 이상(인스턴스 C)에 종료 방지가 활성화되어 있으므로 지정된 인스턴스 중 하나 이상이 인스턴스 C인스턴스 D는 종료되지 않습니다.

인스턴스 종료 시 발생하는 상황

terminate-instances 명령을 사용하여 EC2 인스턴스를 종료하면 OS 수준에서 다음 항목이 등록됩니다.

  • API 요청은 버튼 누름 이벤트를 게스트로 전송합니다.

  • 다양한 시스템 서비스는 버튼 누름 이벤트의 결과로 중지됩니다. systemd는 시스템의 정상 종료를 처리합니다. 정상 종료는 하이퍼바이저에서 ACPI 종료 버튼 누름 이벤트에 의해 트리거됩니다.

  • ACPI 종료가 시작됩니다.

  • 정상 종료 프로세스가 종료되면 인스턴스가 종료됩니다. 구성 가능한 OS 종료 시간은 없습니다.

인스턴스 종료

AWS Management Console 또는 명령줄을 사용해서 인스턴스를 종료할 수 있습니다.

기본적으로 shutdown 또는 poweroff 명령을 사용하여 Amazon EBS 지원 인스턴스에서 종료를 시작하면 인스턴스가 중지됩니다. halt 명령은 종료를 시작하지 않습니다. 인스턴스를 사용하면 인스턴스가 종료되지 않고 대신 CPU를 HLT에 배치하고 인스턴스는 계속 실행됩니다.

New console

콘솔을 사용한 인스턴스 종료 방법

  1. 인스턴스를 종료하기 전에 Amazon EBS 볼륨이 종료 시 삭제되지 않는지 그리고 인스턴스 스토어 볼륨에서 영구 스토리지(예: Amazon EBS 또는 Amazon S3)로 필요한 데이터를 복사했는지를 확인해서 데이터 손실이 일어나지 않도록 합니다.

  2. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  3. 탐색 창에서 인스턴스를 선택합니다.

  4. 인스턴스를 선택하고 [인스턴스 상태(Instance state)], [인스턴스 종료(Terminate instance)]를 차례로 선택합니다.

  5. 확인 메시지가 나타나면 종료를 선택합니다.

Old console

콘솔을 사용한 인스턴스 종료 방법

  1. 인스턴스를 종료하기 전에 Amazon EBS 볼륨이 종료 시 삭제되지 않는지 그리고 인스턴스 스토어 볼륨에서 영구 스토리지(예: Amazon EBS 또는 Amazon S3)로 필요한 데이터를 복사했는지를 확인해서 데이터 손실이 일어나지 않도록 합니다.

  2. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  3. 탐색 창에서 인스턴스를 선택합니다.

  4. 인스턴스를 선택하고 작업, 인스턴스 상태, 종료를 선택합니다.

  5. 확인 메시지가 나타나면 예, 종료를 선택합니다.

명령줄을 사용한 인스턴스 종료 방법

다음 명령 중 하나를 사용할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하십시오.

종료 방지 기능 활성화

기본 설정상 Amazon EC2, 콘솔, 명령줄, API를 사용해서 인스턴스를 종료할 수 있습니다. Amazon EC2를 사용할 때 인스턴스가 실수로 종료되지 않도록 하기 위해 해당 인스턴스에 대한 종료 방지 기능을 활성화할 수 있습니다. DisableApiTermination 속성은 콘솔, CLI, API를 사용해서 인스턴스가 종료될 수 있는지를 제어합니다. 기본 설정상 인스턴스에 대한 종료 보호 기능은 비활성화되어 있습니다. 인스턴스를 실행할 때 또는 인스턴스가 실행 중이거나 인스턴스가 중지되어 있을 때, 이 속성의 값을 설정할 수 있습니다(Amazon EBS 지원 인스턴스의 경우).

DisableApiTermination 속성은 InstanceInitiatedShutdownBehavior 속성이 설정된 때에는 시스템 종료에 대한 운영 체제 명령을 사용해서 인스턴스에서 종료를 개시한 경우의 인스턴스 종료를 방지하지는 않습니다. 자세한 내용은 인스턴스가 시작하는 종료 동작 변경 섹션을 참조하세요.

Limitations

스팟 인스턴스에는 종료 방지 기능을 사용할 수 없습니다. 스팟 가격이 스팟 인스턴스에 대해 지불하려는 금액을 초과하면 스팟 인스턴스가 종료됩니다. 하지만 스팟 인스턴스 중단을 처리할 수 있도록 애플리케이션을 준비하는 것은 가능합니다. 자세한 내용은 스팟 인스턴스 중단 섹션을 참조하세요.

DisableApiTermination 속성으로는 Amazon EC2 Auto Scaling의 인스턴스 종료를 방지할 수 없습니다. Auto Scaling 그룹에 있는 인스턴스의 경우 Amazon EC2 종료 보호 대신 다음의 Amazon EC2 Auto Scaling 기능을 사용합니다.

  • 인스턴스 보호 기능을 사용하면 확장 시 Auto Scaling 그룹에 속한 인스턴스가 종료되지 않습니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서인스턴스 보호를 참조하십시오.

  • Amazon EC2 Auto Scaling의 비정상 인스턴스 종료를 방지하려면 ReplaceUnhealthy 프로세스를 일시 중단하십시오. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서조정 프로세스 일시 중단 및 재개 단원을 참조하십시오.

  • 종료 정책을 선택하여 Amazon EC2 Auto Scaling가 어떤 인스턴스를 먼저 종료해야 할지 지정하십시오. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서종료 정책 사용자 지정을 참조하십시오.

실행 시에 인스턴스에 대한 종료 방지 기능 활성화 방법

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 대시보드에서 인스턴스 시작을 선택하고 마법사의 지시를 따릅니다.

  3. Configure Instance Details(인스턴스 세부 정보 구성) 페이지에서 종료 방지 기능 활성화 확인란을 선택합니다.

실행 중인 또는 중단된 인스턴스에 대한 종료 방지 기능 활성화 방법

  1. 인스턴스를 선택하고 작업, 인스턴스 설정, 종료 방지 기능 변경을 선택합니다.

  2. 예, 활성화를 선택합니다.

실행 중인 또는 중단된 인스턴스에 대한 종료 방지 기능 비활성화 방법

  1. 인스턴스를 선택하고 작업, 인스턴스 설정, 종료 방지 기능 변경을 선택합니다.

  2. 예, 비활성화를 선택합니다.

명령줄을 사용한 종료 방지 기능의 활성화 또는 비활성화 방법

다음 명령 중 하나를 사용할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하십시오.

인스턴스가 시작하는 종료 동작 변경

기본적으로 (shutdown 또는 poweroff 등과 같은 명령을 사용하여) Amazon EBS 지원 인스턴스에서 종료를 시작하면 해당 인스턴스가 중지합니다. haltpoweroff 명령을 실행하지 않는데, 이 명령을 사용하면 인스턴스가 종료되지 않고 대신 CPU를 HLT에 배치해 인스턴스가 실행 중인 상태로 남아 있습니다. 인스턴스에 대한 InstanceInitiatedShutdownBehavior 속성을 사용해서 이런 동작을 변경해서 인스턴스가 중단되지 않고 종료되도록 할 수 있습니다. 인스턴스가 실행 중이거나 중단된 상태에 있을 때 이 속성을 업데이트할 수 있습니다.

Amazon EC2 또는 명령줄을 사용하여 InstanceInitiatedShutdownBehavior 속성을 업데이트할 수 있습니다. InstanceInitiatedShutdownBehavior 속성은 인스턴스 자체의 운영 체제에서 종료하는 경우에만 적용되며, StopInstances API 또는 Amazon EC2 콘솔을 사용하여 인스턴스를 중지하는 경우에는 적용되지 않습니다.

콘솔을 사용한 인스턴스의 종료 동작 변경 방법

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 인스턴스를 선택합니다.

  3. 인스턴스를 선택합니다.

  4. 작업, 인스턴스 설정, 종료 동작 변경을 차례로 선택합니다. 현재 동작이 선택됩니다.

  5. 동작을 변경하려면 종료 동작에서 중지 또는 종료를 선택한 다음 적용을 선택합니다.

명령줄을 사용한 인스턴스의 종료 동작 변경 방법

다음 명령 중 하나를 사용할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하십시오.

인스턴스 종료 시 Amazon EBS 볼륨 보존

인스턴스가 종료되면 Amazon EC2가 연결된 각 Amazon EBS 볼륨의 DeleteOnTermination 속성 값을 사용하여 볼륨 유지 또는 삭제 여부를 결정합니다.

DeleteOnTermination 속성의 기본값은 볼륨이 인스턴스의 루트 볼륨인지 아니면 인스턴스에 연결된 루트 외 볼륨인지에 따라 다릅니다.

루트 볼륨

기본적으로 인스턴스의 루트 볼륨의 DeleteOnTermination 속성은 true로 설정됩니다. 따라서 기본값은 인스턴스가 종료될 때 인스턴스의 루트 볼륨을 삭제하는 것입니다. AMI를 생성한 사람과 인스턴스를 시작한 사람이 DeleteOnTermination 속성을 설정할 수 있습니다. AMI를 생성한 사람 또는 인스턴스를 시작한 사람이 속성을 변경하면 새로운 설정이 원래 AMI 기본 설정을 재정의합니다. AMI를 사용하여 인스턴스를 시작한 후에는 DeleteOnTermination 속성에 대한 기본 설정을 확인하는 것이 좋습니다.

루트 외 볼륨

기본적으로 루트 외 EBS 볼륨을 인스턴스에 연결하면 그 DeleteOnTermination 속성이 false로 설정됩니다. 따라서 기본값은 이러한 볼륨을 유지하는 것입니다. 인스턴스가 종료된 후에 유지된 볼륨의 스냅샷을 만들거나 다른 인스턴스에 연결할 수 있습니다. 추가 비용이 청구되지 않도록 하려면 볼륨을 삭제해야 합니다. 자세한 내용은 Amazon EBS 볼륨 삭제 섹션을 참조하세요.

사용 중인 EBS 볼륨의 DeleteOnTermination 속성 값을 확인하려면 해당 인스턴스의 블록 디바이스 매핑을 검색합니다. 자세한 내용은 인스턴스 블록 디바이스 매핑에서 EBS 볼륨 보기 섹션을 참조하세요.

인스턴스를 시작할 때 또는 인스턴스 실행 중에 볼륨의 DeleteOnTermination 속성 값을 변경할 수 있습니다.

콘솔을 사용하여 시작 시 유지할 루트 볼륨 변경

콘솔을 사용하면 인스턴스를 시작할 때 DeleteOnTermination 속성을 변경할 수 있습니다. 실행 중인 인스턴스의 속성을 변경하려면 명령줄을 사용해야 합니다.

콘솔을 사용해서 실행 시에 인스턴스의 루트 볼륨이 유지되도록 변경하는 방법

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 콘솔 대시보드에서 인스턴스 시작을 선택합니다.

  3. Amazon Machine Image(AMI) 선택 페이지에서 AMI를 선택한 후 선택을 선택합니다.

  4. 마법사 안내에 따라 인스턴스 유형 선택인스턴스 세부 정보 구성 설정을 완료합니다.

  5. 스토리지 추가 페이지에서 루트 볼륨에 대한 종료 시 삭제 확인란 선택을 해제합니다.

  6. 나머지 마법사 페이지를 완료한 후 시작을 선택합니다.

인스턴스의 세부 정보 창에서 루트 디바이스 볼륨의 세부 정보를 조회하여 설정을 확인할 수 있습니다. 스토리지 탭의 블록 디바이스에서 오른쪽으로 스크롤하여 볼륨에 종료 시 삭제 설정을 지정합니다. 종료 시 삭제의 기본 설정은 Yes입니다. 기본 설정을 변경하면 종료 시 삭제의 설정 값이 No가 됩니다.

이전 콘솔 환경의 인스턴스 세부 정보 창에서 루트 디바이스 볼륨의 세부 정보를 조회하여 설정을 확인할 수 있습니다. 블록 디바이스 옆의 루트 디바이스 볼륨 항목을 선택합니다. 종료 시 삭제의 기본 설정은 True입니다. 기본 설정을 변경하면 종료 시 삭제의 설정 값이 False가 됩니다.

명령줄을 사용하여 시작 시 유지할 루트 볼륨 변경

EBS 지원 인스턴스를 시작할 때 다음 명령 중 하나를 사용해서 루트 디바이스 볼륨이 유지되도록 변경할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하십시오.

예를 들어, 다음 옵션을 run-instances 명령에 추가합니다.

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

mapping.json에서 다음을 지정합니다.

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false, "SnapshotId": "snap-1234567890abcdef0", "VolumeType": "gp2" } } ]

명령줄을 사용하여 실행 중인 인스턴스의 루트 볼륨이 유지되도록 변경

다음 명령 중 하나를 사용하여 실행 중인 EBS 지원 인스턴스의 루트 디바이스 볼륨이 유지되도록 변경할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하십시오.

예를 들어, 다음 명령을 사용합니다.

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

mapping.json에서 다음을 지정합니다.

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]

인스턴스 종료 문제 해결

인스턴스를 종료했을 때 다른 인스턴스가 시작될 경우 EC2 집합 또는 Amazon EC2 Auto Scaling 같은 기능을 통해 자동 조정을 구성했을 가능성이 큽니다.

인스턴스가 shutting-down 상태에 일반적인 경우보다 장기간 머물러 있는 경우, 해당 인스턴스는 Amazon EC2 서비스 내 자동화된 과정에 의해 클린업(종료)됩니다. 자세한 내용은 지연된 인스턴스 종료 섹션을 참조하세요.