Amazon EC2 인스턴스 중지(Stop) 및 시작(Start)

Amazon EC2 인스턴스 중지(Stop) 및 시작(Start)

인스턴스의 루트 볼륨이 Amazon EBS 볼륨이라면 인스턴스를 중지하고 시작할 수 있어요. 인스턴스를 중지하면 종료(shutdown)되고, 시작하면 일반적으로 새 기본 호스트 컴퓨터로 마이그레이션되어 새 퍼블릭 IPv4 주소가 부여됩니다. 이 글에서는 수동 중지·시작과 자동화 방법, 실행·중지 인스턴스 찾기, 최초·최근 시작 시간 찾기를 다룰게요.

출처: 문서

본문

인스턴스의 루트 볼륨이 Amazon EBS 볼륨이라면 인스턴스를 중지하고 시작할 수 있어요. 인스턴스를 중지하면 종료됩니다. 인스턴스를 시작하면 일반적으로 새 기본 호스트 컴퓨터로 마이그레이션되고 새 퍼블릭 IPv4 주소가 부여됩니다.

인스턴스 중지에는 사용자 시작(수동으로 인스턴스를 중지)과 AWS 시작(AWS가 인스턴스의 기본 호스트에 복구할 수 없는 장애를 감지한 예약 중지 이벤트에 대응) 두 가지가 있어요.

사용자 시작 중지에는 인스턴스에서 OS 중지 명령을 실행하는 대신 Amazon EC2 콘솔, CLI, API를 사용하는 것을 권장합니다. Amazon EC2를 사용하면 인스턴스가 몇 분 안에 깨끗하게 종료되지 않으면 Amazon EC2가 강제 종료(hard shutdown)를 수행합니다. 또한 AWS CloudTrail은 인스턴스가 중지된 시점의 API 기록을 생성합니다.

이 주제는 사용자 시작 중지를 수행하는 방법을 설명해요. AWS가 수행하는 중지에 대한 정보는 Manage Amazon EC2 instances scheduled to stop or retire를 참고하세요.

인스턴스를 중지해도 삭제되지는 않아요. 더 이상 인스턴스가 필요 없다고 판단되면 종료(terminate)할 수 있어요. 자세한 내용은 Terminate Amazon EC2 instances를 참고하세요. 인스턴스 메모리(RAM)의 내용을 보존하기 위해 최대 절전(hibernate)하려면 Hibernate your Amazon EC2 instance를 참고하세요. 인스턴스 수명주기 작업의 차이점은 Differences between instance states를 참고하세요.

수동으로 인스턴스 중지·시작하기 (Manually stop and start)

Amazon EBS 기반 인스턴스(EBS 루트 볼륨이 있는 인스턴스)는 중지하고 시작할 수 있어요. 인스턴스 스토어 루트 볼륨이 있는 인스턴스는 중지·시작할 수 없습니다.

기본 방법으로 인스턴스를 중지하면 **정상적인 OS 종료(graceful OS shutdown)**가 시도됩니다. 정상적인 OS 종료를 건너뛸 수도 있지만, 이는 데이터 무결성을 위험에 빠뜨릴 수 있어요.

Warning
인스턴스를 중지하면 인스턴스 스토어 볼륨의 데이터가 지워집니다. 인스턴스를 중지하기 전에 인스턴스 스토어 볼륨에서 필요한 모든 데이터를 Amazon EBS나 Amazon S3 같은 영구 스토리지로 복사했는지 확인하세요.

[Linux 인스턴스] 인스턴스에서 OS halt 명령을 사용해도 종료가 시작되지 않아요. halt 명령을 사용하면 인스턴스가 종료되지 않고 CPU를 HLT 상태로 만들어 CPU 동작을 일시 중단합니다. 인스턴스는 실행 중인 상태를 유지해요.

OS shutdown 또는 poweroff 명령을 사용해 종료를 시작할 수 있어요. OS 명령을 사용하면 기본적으로 인스턴스가 중지됩니다. 이 동작을 변경할 수 있어요. 자세한 내용은 Change instance initiated shutdown behavior를 참고하세요.

Note
Amazon EBS 기반 인스턴스를 중지했는데 stopping 상태에 "갇힌" 것처럼 보이면 강제로 중지할 수 있어요. 자세한 내용은 Troubleshoot Amazon EC2 instance stop issues를 참고하세요.

중지·시작 방법

  • 정상적인 OS 종료로 인스턴스 중지
  • 정상적인 OS 종료를 건너뛰고 인스턴스 중지
  • 인스턴스 시작

정상적인 OS 종료로 인스턴스 중지하기

정상적인 OS 종료를 시도하는 기본 중지 방법으로 인스턴스를 중지할 수 있어요. 자세한 내용은 Default stop을 참고하세요.

콘솔 (Console)

기본 중지 방법으로 인스턴스를 중지하려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 왼쪽 탐색 창에서 Instances를 선택하고 인스턴스를 선택해요.
  3. Instance state, Stop instance를 선택해요. 이 옵션이 비활성화되어 있다면 인스턴스가 이미 중지되었거나 그 루트 볼륨이 인스턴스 스토어 볼륨이기 때문입니다.
  4. 확인 프롬프트가 표시되면 Stop을 선택해요. 인스턴스가 중지되기까지 몇 분이 걸릴 수 있어요.

AWS CLI

기본 중지 방법으로 인스턴스를 중지하려면

stop-instances 명령을 사용해요.

aws ec2 stop-instances --instance-ids i-1234567890abcdef0

PowerShell

기본 중지 방법으로 인스턴스를 중지하려면

Stop-EC2Instance cmdlet을 사용해요.

Stop-EC2Instance -InstanceId i-1234567890abcdef0

정상적인 OS 종료를 건너뛰고 인스턴스 중지하기

인스턴스를 중지할 때 정상적인 OS 종료를 건너뛸 수 있어요. 자세한 내용은 Stop with skip OS shutdown을 참고하세요.

Warning
정상적인 OS 종료를 건너뛰면 데이터 손실이나 손상(예: 메모리 내용이 디스크로 플러시되지 않거나 진행 중인 I/O 손실), 또는 종료 스크립트가 건너뛰어질 수 있어요.

콘솔 (Console)

정상적인 OS 종료를 건너뛰고 인스턴스를 중지하려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 탐색 창에서 Instances를 선택하고 인스턴스를 선택해요.
  3. Instance state, Stop instance를 선택해요.
  4. Skip OS shutdown 아래에서 Skip OS shutdown 확인란을 선택해요. 콘솔에서 이 옵션이 보이지 않으면 현재 리전의 콘솔에서 아직 사용할 수 없는 것입니다. 다만 AWS CLI나 SDK로 이 기능에 액세스하거나 콘솔에서 다른 리전을 시도할 수 있어요.
  5. Stop을 선택해요.

AWS CLI

정상적인 OS 종료를 건너뛰고 인스턴스를 중지하려면

--skip-os-shutdown과 함께 stop-instances 명령을 사용해요.

aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --skip-os-shutdown

PowerShell

정상적인 OS 종료를 건너뛰고 인스턴스를 중지하려면

-SkipOsShutdown $true와 함께 Stop-EC2Instance cmdlet을 사용해요.

Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -SkipOsShutdown $true

인스턴스 시작하기 (Start an instance)

중지된 인스턴스를 시작할 수 있어요.

콘솔 (Console)

인스턴스를 시작하려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 왼쪽 탐색 창에서 Instances를 선택해요.
  3. 인스턴스를 선택하고 Instance state, Start instance를 선택해요. 인스턴스가 running 상태가 되기까지 몇 분 걸릴 수 있어요.

AWS CLI

인스턴스를 시작하려면

start-instances 명령을 사용해요.

aws ec2 start-instances --instance-ids i-1234567890abcdef0

PowerShell

인스턴스를 시작하려면

Start-EC2Instance cmdlet을 사용해요.

Start-EC2Instance -InstanceId i-1234567890abcdef0

인스턴스 자동 중지·시작하기 (Automatically stop and start)

다음 서비스로 인스턴스 중지·시작을 자동화할 수 있어요.

Instance Scheduler on AWS – EC2 인스턴스의 시작·중지를 자동화할 수 있어요. 자세한 내용은 How do I use Instance Scheduler with CloudFormation to schedule EC2 instances?를 참고하세요. 추가 요금이 부과된다는 점에 주의하세요.

AWS Lambda와 Amazon EventBridge 규칙 – Lambda와 EventBridge 규칙을 사용해 일정에 따라 인스턴스를 중지·시작할 수 있어요. 자세한 내용은 How do I use Lambda to stop and start Amazon EC2 instances at regular intervals?를 참고하세요.

Amazon EC2 Auto Scaling – 애플리케이션의 부하를 처리할 올바른 수의 Amazon EC2 인스턴스를 확보하려면 Auto Scaling 그룹을 만들어요. Amazon EC2 Auto Scaling은 애플리케이션에 트래픽 수요를 처리할 올바른 용량이 항상 있는지 보장하고, 필요한 경우에만 인스턴스를 시작해 비용을 절약해줘요. Amazon EC2 Auto Scaling은 불필요한 인스턴스를 중지하는 것이 아니라 종료한다는 점에 주의하세요. Auto Scaling 그룹 설정은 Get started with Amazon EC2 Auto Scaling을 참고하세요.

실행·중지 인스턴스 찾기 (Find all running and stopped instances)

Amazon EC2 Global View를 사용하면 모든 AWS 리전의 실행·중지 인스턴스를 한 페이지에서 찾을 수 있어요. 이 기능은 인벤토리 작성과 잊어버린 인스턴스 찾기에 특히 유용합니다. Global View 사용법은 View resources across Regions using AWS Global View를 참고하세요.

또는 인스턴스가 있는 각 리전에서 명령이나 cmdlet을 실행할 수 있어요.

AWS CLI

리전의 EC2 인스턴스 수를 얻으려면

현재 리전의 인스턴스를 세려면 다음 describe-instances 명령을 사용해요. 인스턴스가 있는 각 리전에서 이 명령을 실행해야 해요.

aws ec2 describe-instances \
    --region us-east-2 \
    --query "length(Reservations[].Instances[])"

다음은 예시 출력이에요.

27

리전의 EC2 인스턴스 요약 정보를 얻으려면

다음 describe-instances 명령을 사용해요. 인스턴스가 있는 각 리전에서 이 명령을 실행해야 해요.

aws ec2 describe-instances \
    --region us-east-2 \
    --query "Reservations[].Instances[].[InstanceId,InstanceType,PrivateIpAddress]" \
    --output table

다음은 예시 출력이에요.

---------------------------------------------------------
|                   DescribeInstances                   |
+---------------------+---------------+-----------------+
|  i-0e3e777f4362f1bf7|  t2.micro     |  10.0.12.9      |
|  i-09453945dcf1529e9|  t2.micro     |  10.0.143.213   |
|  i-08fd74f3f1595fdbd|  m7i.4xlarge  |  10.0.1.103     |
+---------------------+---------------+-----------------+

PowerShell

리전의 EC2 인스턴스 수를 얻으려면

Get-EC2Instance cmdlet을 사용해요.

(Get-EC2Instance -Region us-east-2).Instances.Length

다음은 예시 출력이에요.

27

리전의 EC2 인스턴스 요약 정보를 얻으려면

Get-EC2Instance cmdlet을 사용해요. 인스턴스가 있는 각 리전에서 이 명령을 실행해야 해요.

(Get-EC2Instance).Instances | Select InstanceId, InstanceType, PrivateIpAddress

다음은 예시 출력이에요.

InstanceId          InstanceType PrivateIpAddress
----------          ------------ ----------------
i-0e3e777f4362f1bf7 t2.micro     10.0.12.9
i-09453945dcf1529e9 t2.micro     10.0.143.213
i-08fd74f3f1595fdbd m7i.4xlarge  10.0.1.103

최초·최근 시작 시간 찾기 (Find the initial and most recent launch times)

인스턴스를 설명하면 인스턴스의 시작 시간은 가장 최근 시작 시간이에요. 인스턴스를 중지·시작한 뒤에는 시작 시간이 새 인스턴스 시작 시간을 반영합니다. 중지·시작한 뒤에도 인스턴스의 최초 시작 시간을 찾으려면 기본 네트워크 인터페이스가 인스턴스에 연결된 시점을 보세요.

콘솔 (Console)

최근 시작 시간을 찾으려면 인스턴스를 선택하고 Details 탭의 Instance details 아래에서 Launch time을 찾아요.

최초 시작 시간을 찾으려면 인스턴스를 선택하고 Networking 탭의 Network interfaces 아래에서 기본 네트워크 인터페이스(디바이스 인덱스 0)를 찾아요.

AWS CLI

최초·최근 시작 시간을 찾으려면

지정한 인스턴스의 최초 시작 시간과 최근 시작 시간을 모두 표시하려면 다음 describe-instances 명령을 사용해요.

aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query 'Reservations[].Instances[].{InstanceID:InstanceId,InitialLaunch:NetworkInterfaces[0].Attachment.AttachTime,LastLaunch:LaunchTime}'

다음은 예시 출력이에요.

[
    {
        "InstanceID": "i-1234567890abcdef0",
        "InitialLaunch": "2024-04-19T00:47:08+00:00",
        "LastLaunch": "2024-05-27T06:24:06+00:00"
    }
]

PowerShell

최근 시작 시간을 찾으려면

Get-EC2Instance cmdlet을 사용해요.

(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.LaunchTime

다음은 예시 출력이에요.

Monday, May 27, 2024 6:24:06 AM

최초 시작 시간을 찾으려면

Get-EC2Instance cmdlet을 사용해요.

(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.NetworkInterfaces.Attachment.AttachTime

다음은 예시 출력이에요.

Friday, April 19, 2024 12:47:08 AM

더 알아보기 (Learn more)