인스턴스 종료
더 이상 필요하지 않은 인스턴스는 삭제할 수 있습니다. 이를 인스턴스 종료라고 합니다. 인스턴스 상태가 shutting-down
또는 terminated
로 변경되는 즉시 해당 인스턴스에 대한 반복적인 요금 부과가 중단됩니다.
인스턴스를 종료한 후에는 그 인스턴스에 다시 연결하거나 재시작할 수 없습니다. 하지만 동일한 AMI를 사용해서 추가 인스턴스를 실행할 수 있습니다. 인스턴스를 중지했다가 다시 시작하거나 최대 절전 모드로 전환하면 인스턴스 중지 및 시작 또는 온디맨드 인스턴스 또는 스팟 인스턴스를 최대 절전 모드로 전환 섹션을 참조하세요. 자세한 내용은 재부팅, 중지, 최대 절전 모드 및 종료의 차이 섹션을 참조하세요.
목차
인스턴스 종료
인스턴스는 종료한 후에도 잠시 동안 콘솔에 표시되며 그 이후 항목이 자동으로 삭제됩니다. 종료된 인스턴스 항목을 사용자가 직접 삭제할 수는 없습니다. 인스턴스가 종료되면 태그 및 볼륨과 같은 리소스가 해당 인스턴스에서 점차 연결 해제되며, 조금 지나면 종료된 인스턴스에서 더 이상 보이지 않을 수 있습니다.
인스턴스가 종료하면 해당 인스턴스와 관련된 모든 인스턴스 스토어 볼륨의 데이터는 삭제됩니다.
기본적으로 Amazon EBS 루트 디바이스 볼륨은 인스턴스 종료 시 자동으로 삭제됩니다. 하지만 시작 시 연결하는 추가 EBS 볼륨 또는 기존 인스턴스에 연결하는 EBS 볼륨은 인스턴스가 종료된 후에도 기본적으로 유지됩니다. 이런 동작은 해당 볼륨의 DeleteOnTermination
속성에 의해 제어되며, 이러한 속성은 사용자가 변경할 수 있습니다. 자세한 내용은 인스턴스 종료 시 Amazon EBS 볼륨 보존 섹션을 참조하세요.
AWS Management Console, CLI, API를 사용하는 타인의 실수로 인스턴스가 종료되는 것을 방지할 수 있습니다 이 기능은 Amazon EC2 인스턴스 스토어 지원 및 Amazon EBS-지원 인스턴스에 대해 제공됩니다. 각 인스턴스는 DisableApiTermination
속성을 가지고 있으며 그 기본 값은 false
로 설정되어 있습니다(해당 인스턴스는 Amazon EC2를 통해 종료할 수 있음). 인스턴스가 실행 중이거나 중단된 상태에 있을 때 이 인스턴스를 변경할 수 있습니다(Amazon EBS 지원 인스턴스의 경우). 자세한 내용은 종료 방지 기능 활성화 섹션을 참조하세요.
시스템 종료에 대한 운영 체제 명령을 사용해서 인스턴스에서 종료를 개시한 경우, 인스턴스가 중단 또는 종료되는 것을 사용자가 제어할 수 있습니다. 자세한 내용은 인스턴스가 시작하는 종료 동작 변경 섹션을 참조하세요.
인스턴스 종료에 대한 스크립트를 실행하는 경우 종료 스크립트의 실행을 보장할 방법이 없기 때문에 인스턴스가 비정상적으로 종료될 수 있습니다. 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
에 배치하고 인스턴스는 계속 실행됩니다.
통제된 오류 주입 실험을 실행하려면
AWS Fault Injection Service를 사용하여 인스턴스가 종료될 때 애플리케이션이 어떻게 반응하는지 테스트할 수 있습니다. 자세한 정보는 AWS Fault Injection Service 사용 설명서를 참조하세요.
종료 방지 기능 활성화
기본 설정상 Amazon EC2, 콘솔, 명령줄, API를 사용해서 인스턴스를 종료할 수 있습니다. Amazon EC2를 사용할 때 인스턴스가 실수로 종료되지 않도록 하기 위해 해당 인스턴스에 대한 종료 방지 기능을 활성화할 수 있습니다. DisableApiTermination
속성은 콘솔, CLI, API를 사용해서 인스턴스가 종료될 수 있는지를 제어합니다. 기본 설정상 인스턴스에 대한 종료 보호 기능은 비활성화되어 있습니다. 인스턴스를 실행할 때 또는 인스턴스가 실행 중이거나 인스턴스가 중지되어 있을 때, 이 속성의 값을 설정할 수 있습니다(Amazon EBS 지원 인스턴스의 경우).
DisableApiTermination
속성은 InstanceInitiatedShutdownBehavior
속성이 설정된 때에는 시스템 종료에 대한 운영 체제 명령을 사용해서 인스턴스에서 종료를 개시한 경우의 인스턴스 종료를 방지하지는 않습니다. 자세한 내용은 인스턴스가 시작하는 종료 동작 변경 섹션을 참조하세요.
제한 사항
스팟 인스턴스에는 종료 방지 기능을 사용할 수 없습니다. 스팟 가격이 스팟 인스턴스에 대해 지불하려는 금액을 초과하면 스팟 인스턴스가 종료됩니다. 하지만 스팟 인스턴스 중단을 처리할 수 있도록 애플리케이션을 준비하는 것은 가능합니다. 자세한 내용은 스팟 인스턴스 중단 섹션을 참조하세요.
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 사용 설명서의 종료 정책 사용자 지정을 참조하세요.
실행 시에 인스턴스에 대한 종료 방지 기능 활성화 방법
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
대시보드에서 인스턴스 시작을 선택하고 마법사의 지시를 따릅니다.
-
Configure Instance Details(인스턴스 세부 정보 구성) 페이지에서 종료 방지 기능 활성화 확인란을 선택합니다.
실행 중인 또는 중단된 인스턴스에 대한 종료 방지 기능 활성화 방법
-
인스턴스를 선택하고 작업, 인스턴스 설정, 종료 방지 기능 변경을 선택합니다.
-
예, 활성화를 선택합니다.
실행 중인 또는 중단된 인스턴스에 대한 종료 방지 기능 비활성화 방법
-
인스턴스를 선택하고 작업, 인스턴스 설정, 종료 방지 기능 변경을 선택합니다.
-
예, 비활성화를 선택합니다.
명령줄을 사용한 종료 방지 기능의 활성화 또는 비활성화 방법
다음 명령 중 하나를 사용할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 섹션을 참조하세요.
modify-instance-attribute(AWS CLI)
Edit-EC2InstanceAttribute(AWS Tools for Windows PowerShell)
인스턴스가 시작하는 종료 동작 변경
(shutdown 또는 poweroff 등의 명령을 사용하여) Amazon EBS 지원 인스턴스에서 종료를 시작하면 기본적으로 인스턴스가 중지됩니다. 인스턴스에 대한 InstanceInitiatedShutdownBehavior
속성을 변경하여 대신 이 인스턴스스가 종료되도록 이 동작을 변경할 수 있습니다. 인스턴스가 실행 중이거나 중단된 상태에 있을 때 이 속성을 변경할 수 있습니다. (halt는 poweroff 명령을 실행하지 않으며, 사용할 경우 인스턴스가 종료되지 않습니다. 대신 CPU를 HLT
에 배치하고 인스턴스는 계속 실행됩니다.)
InstanceInitiatedShutdownBehavior
속성은 인스턴스 자체의 운영 체제를 종료를 수행하는 경우에만 적용됩니다. StopInstances
API 또는 Amazon EC2 콘솔을 사용하는 인스턴스를 중지하는 경우에는 적용되지 않습니다.
Amazon EC2 또는 명령줄을 사용하여 InstanceInitiatedShutdownBehavior
속성을 변경할 수 있습니다.
인스턴스 종료 시 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
속성을 변경할 수 있습니다. 실행 중인 인스턴스의 속성을 변경하려면 명령줄을 사용해야 합니다.
콘솔을 사용해서 실행 시에 인스턴스의 루트 볼륨이 유지되도록 변경하는 방법
-
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
콘솔 대시보드에서 인스턴스 시작을 선택합니다.
-
Amazon Machine Image(AMI) 선택 페이지에서 AMI를 선택한 후 선택을 선택합니다.
-
마법사 안내에 따라 인스턴스 유형 선택 및 인스턴스 세부 정보 구성 설정을 완료합니다.
-
스토리지 추가 페이지에서 루트 볼륨에 대한 종료 시 삭제 확인란 선택을 해제합니다.
-
나머지 마법사 페이지를 완료한 후 시작을 선택합니다.
새 콘솔 환경의 인스턴스 세부 정보 창에서 루트 디바이스 볼륨의 세부 정보를 조회하여 설정을 확인할 수 있습니다. 스토리지(Storage) 탭의 블록 디바이스(Block devices)에서 오른쪽으로 스크롤하여 볼륨에 종료 시 삭제(Delete on termination) 설정을 지정합니다. 종료 시 삭제의 기본 설정은 Yes
입니다. 기본 설정을 변경하면 종료 시 삭제의 설정 값이 No
가 됩니다.
이전 콘솔 환경의 인스턴스 세부 정보 창에서 루트 디바이스 볼륨의 세부 정보를 조회하여 설정을 확인할 수 있습니다. 블록 디바이스 옆의 루트 디바이스 볼륨 항목을 선택합니다. 종료 시 삭제의 기본 설정은 True
입니다. 기본 설정을 변경하면 종료 시 삭제의 설정 값이 False
가 됩니다.
명령줄을 사용하여 시작 시 유지할 루트 볼륨 변경
EBS 지원 인스턴스를 시작할 때 다음 명령 중 하나를 사용해서 루트 디바이스 볼륨이 유지되도록 변경할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 섹션을 참조하세요.
run-instances(AWS CLI)
https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.htmlNew-EC2Instance(AWS Tools for Windows PowerShell)
유지하려는 볼륨에 대한 블록 디바이스 매핑에 --DeleteOnTermination
을 포함하고 false
를 지정합니다.
예를 들어, 볼륨을 유지하려면 다음 옵션을 run-instances
명령에 추가합니다.
--block-device-mappings file://mapping.json
mapping.json
에서 디바이스 이름(예: /dev/sda1
또는 /dev/xvda
)을 지정하고 --DeleteOnTermination
에 대해 false
를 지정합니다.
[ { "DeviceName": "
device_name
", "Ebs": { "DeleteOnTermination": false } } ]
명령줄을 사용하여 실행 중인 인스턴스의 루트 볼륨이 유지되도록 변경
다음 명령 중 하나를 사용하여 실행 중인 EBS 지원 인스턴스의 루트 디바이스 볼륨이 유지되도록 변경할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 섹션을 참조하세요.
modify-instance-attribute(AWS CLI)
Edit-EC2InstanceAttribute(AWS Tools for Windows PowerShell)
예를 들어, 다음 명령을 사용합니다.
aws ec2 modify-instance-attribute --instance-id
i-1234567890abcdef0
--block-device-mappings file://mapping.json
mapping.json
에서 디바이스 이름(예: /dev/sda1
또는 /dev/xvda
)을 지정하고 --DeleteOnTermination
에 대해 false
를 지정합니다.
[ { "DeviceName": "
device_name
", "Ebs": { "DeleteOnTermination": false } } ]