예약 인스턴스(Reserved Instances) 수정하기
예약 인스턴스(Reserved Instances) 수정하기
필요가 바뀌면 Standard 또는 Convertible 예약 인스턴스를 수정하고 청구 혜택을 계속 누릴 수 있어요. 가용 영역, 인스턴스 크기(같은 인스턴스 패밀리·세대 내), 그리고 예약 인스턴스의 범위(scope) 같은 속성을 변경할 수 있습니다. 이 글에서는 수정 조건과 제한, 인스턴스 크기 수정 지원, 수정 요청 방법, 그리고 트러블슈팅을 다룰게요.
출처: 문서
본문
필요가 바뀌면 Standard 또는 Convertible 예약 인스턴스를 수정하고 청구 혜택을 계속 누릴 수 있어요. 가용 영역, 인스턴스 크기(같은 인스턴스 패밀리·세대 내), 그리고 예약 인스턴스의 범위 같은 속성을 변경할 수 있습니다.
Note
Convertible 예약 인스턴스를 구성이 다른 또 다른 Convertible 예약 인스턴스로 교환할 수도 있어요. 자세한 내용은 Exchange Convertible Reserved Instances를 참고하세요.
예약 인스턴스 전체 또는 일부를 수정할 수 있어요. 원래 예약 인스턴스를 둘 이상의 새 예약 인스턴스로 분할할 수 있습니다. 예를 들어 us-east-1a에 10개 인스턴스 예약이 있고 5개를 us-east-1b로 옮기기로 했다면, 수정 요청 결과는 us-east-1a에 5개, us-east-1b에 5개인 두 개의 새 예약으로 나뉘어요.
또한 둘 이상의 예약 인스턴스를 **병합(merge)**해 단일 예약 인스턴스로 만들 수도 있어요. 예를 들어 1개 인스턴스씩인 t2.small 예약 인스턴스 4개를 병합해 t2.large 예약 인스턴스 1개를 만들 수 있어요. 자세한 내용은 인스턴스 크기 수정 지원을 참고하세요.
수정 후에는 예약 인스턴스의 혜택이 새 파라미터와 일치하는 인스턴스에만 적용됩니다. 예를 들어 예약의 가용 영역을 바꾸면 용량 예약과 가격 혜택이 새 가용 영역의 인스턴스 사용량에 자동으로 적용돼요. 새 파라미터와 더 이상 일치하지 않는 인스턴스는, 계정에 적용 가능한 다른 예약이 없으면 On-Demand 요금으로 청구됩니다.
수정 요청이 성공하면:
- 수정된 예약이 즉시 적용되고, 가격 혜택은 수정 요청 시각이 속한 시간부터 새 인스턴스에 적용돼요. 예를 들어 오후 9:15에 수정에 성공하면 가격 혜택은 오후 9:00부터 새 인스턴스로 옮겨집니다. 수정된 예약 인스턴스의 적용일은 describe-reserved-instances 명령으로 확인할 수 있어요.
- 원래 예약은 **퇴역(retired)**합니다. 원래 예약의 종료일은 새 예약의 시작일이 되고, 새 예약의 종료일은 원래 예약 인스턴스의 종료일과 같습니다. 약정이 16개월 남은 3년 예약을 수정하면, 결과적으로 원래 예약과 같은 종료일을 가진 16개월 예약이 돼요.
- 수정된 예약은 원래 예약의 고정 가격이 아니라 $0 고정 가격을 나열합니다.
- 수정된 예약의 고정 가격은 계정에 적용되는 할인 가격 등급 계산에는 영향을 주지 않아요. 그 계산은 원래 예약의 고정 가격에 기반합니다.
수정 요청이 실패하면 예약 인스턴스는 원래 구성을 유지하고, 즉시 다른 수정 요청을 받을 수 있어요.
수정에는 수수료가 없고, 새 청구서나 인보이스도 받지 않습니다. 예약은 원하는 만큼 자주 수정할 수 있지만, 제출한 뒤에는 보류 중인 수정 요청을 변경하거나 취소할 수 없어요. 수정이 성공적으로 완료된 뒤에는 필요하면 변경 사항을 롤백하기 위해 또 다른 수정 요청을 제출할 수 있습니다.
수정 조건과 제한 (Requirements and restrictions)
다음 속성을 다음과 같이 수정할 수 있어요.
| 수정 가능한 속성 | 지원 플랫폼 | 제한 및 고려 사항 |
|---|---|---|
| 같은 리전 내 가용 영역 변경 | Linux 및 Windows | - |
| 범위를 가용 영역에서 리전으로(또는 그 반대로) 변경 | Linux 및 Windows | 영역(zonal) 예약 인스턴스는 가용 영역에 범위가 지정되고 그 가용 영역의 용량을 예약해요. 범위를 가용 영역에서 리전으로(즉 zonal에서 regional로) 바꾸면 용량 예약 혜택을 잃어요. 리전(regional) 예약 인스턴스는 리전에 범위가 지정됩니다. 예약 인스턴스 할인은 그 리전의 모든 가용 영역에서 실행되는 인스턴스에 적용될 수 있어요. 또한 할인은 선택한 인스턴스 패밀리의 모든 크기의 인스턴스 사용량에 적용됩니다. 범위를 리전에서 가용 영역으로(즉 regional에서 zonal로) 바꾸면 가용 영역 유연성과 인스턴스 크기 유연성(해당하는 경우)을 잃어요. 자세한 내용은 How Reserved Instance discounts are applied를 참고하세요. |
| 같은 인스턴스 패밀리·세대 내 인스턴스 크기 변경 | Linux/UNIX만. 인스턴스 크기 유연성은 다른 플랫폼의 예약 인스턴스에는 제공되지 않아요. 여기에는 Linux with SQL Server Standard, Linux with SQL Server Web, Linux with SQL Server Enterprise, Red Hat Enterprise Linux, SUSE Linux, Windows, Windows with SQL Standard, Windows with SQL Server Enterprise, Windows with SQL Server Web이 포함됩니다. | 예약은 기본 임대(default tenancy)를 사용해야 해요. 사용 가능한 다른 크기가 없어 일부 인스턴스 패밀리는 지원되지 않습니다. 자세한 내용은 인스턴스 크기 수정 지원을 참고하세요. |
요구사항 (Requirements)
Amazon EC2는 새 구성(해당하는 경우)에 충분한 용량이 있고 다음 조건이 충족되면 수정 요청을 처리해요.
- 예약 인스턴스는 구매 이전 또는 동시에 수정할 수 없어요.
- 예약 인스턴스는 활성(active) 상태여야 해요.
- 보류 중인 수정 요청이 없어야 해요.
- 예약 인스턴스가 Reserved Instance Marketplace에 나열되어 있지 않아야 해요.
- 원래 예약의 **인스턴스 크기 풋프린트(footprint)**와 새 구성 사이에 일치가 있어야 해요. 자세한 내용은 인스턴스 크기 수정 지원을 참고하세요.
- 원래 예약 인스턴스는 모두 Standard이거나 모두 Convertible이어야 해요(두 유형의 혼합은 안 됨).
- Standard 예약 인스턴스라면 원래 예약 인스턴스들이 같은 시간에 만료되어야 해요.
- 인스턴스 크기를 수정하려면 예약 인스턴스가 인스턴스 크기 유연성을 지원해야 해요. 지원하지 않는 예약 인스턴스 목록은 Instance size flexibility를 참고하세요.
인스턴스 크기 수정 지원 (Support for modifying instance sizes)
다음 요구사항이 충족되면 예약 인스턴스의 인스턴스 크기를 수정할 수 있어요.
요구사항 (Requirements)
-
플랫폼이 Linux/UNIX여야 해요.
-
같은 인스턴스 패밀리(문자로 표시, 예:
T)와 세대(숫자로 표시, 예:2)에서 다른 인스턴스 크기를 선택해야 해요. 예를 들어t2.small을t2.large로 수정할 수 있어요. 둘 다 같은 T2 패밀리·세대이기 때문입니다. 하지만 T2를 M2로, 또는 T2를 T3로 수정할 수는 없어요. 두 경우 모두 대상 인스턴스 패밀리와 세대가 원래 예약 인스턴스와 같지 않기 때문입니다. -
예약 인스턴스가 인스턴스 크기 유연성을 지원하는 경우에만 인스턴스 크기를 수정할 수 있어요. 지원하지 않는 예약 인스턴스 목록은 Instance size flexibility를 참고하세요.
-
t1.micro인스턴스는 크기가 하나뿐이라 예약 인스턴스의 인스턴스 크기를 수정할 수 없어요. -
원래와 새 예약 인스턴스는 같은 인스턴스 크기 풋프린트여야 해요.
인스턴스 크기 풋프린트 (Instance size footprint)
각 예약 인스턴스에는 인스턴스 크기 풋프린트가 있어요. 이는 인스턴스 크기의 정규화 계수(normalization factor)와 예약의 인스턴스 수로 결정됩니다. 예약 인스턴스의 인스턴스 크기를 수정하면 새 구성의 풋프린트가 원래 구성과 일치해야 해요. 그렇지 않으면 수정 요청이 처리되지 않습니다.
인스턴스 크기 풋프린트를 계산하려면 인스턴스 수에 정규화 계수를 곱해요. Amazon EC2 콘솔에서 정규화 계수는 단위(units)로 측정됩니다. 다음 표는 인스턴스 패밀리 내 인스턴스 크기의 정규화 계수를 설명해요. 예를 들어 t2.medium의 정규화 계수는 2이므로, t2.medium 인스턴스 4개의 예약은 풋프린트가 8단위입니다.
| 인스턴스 크기 | 정규화 계수 |
|---|---|
| nano | 0.25 |
| micro | 0.5 |
| small | 1 |
| medium | 2 |
| large | 4 |
| xlarge | 8 |
| 2xlarge | 16 |
| 3xlarge | 24 |
| 4xlarge | 32 |
| 6xlarge | 48 |
| 8xlarge | 64 |
| 9xlarge | 72 |
| 10xlarge | 80 |
| 12xlarge | 96 |
| 16xlarge | 128 |
| 18xlarge | 144 |
| 24xlarge | 192 |
| 32xlarge | 256 |
| 48xlarge | 384 |
| 56xlarge | 448 |
| 96xlarge | 768 |
| 112xlarge | 896 |
예약의 인스턴스 크기 풋프린트가 같게 유지되는 한, 예약을 같은 인스턴스 패밀리의 서로 다른 인스턴스 크기로 분배할 수 있어요. 예를 들어 t2.large(1 @ 4단위) 인스턴스 1개의 예약을 t2.small(4 @ 1단위) 인스턴스 4개로 나눌 수 있어요. 마찬가지로 t2.small 인스턴스 4개의 예약을 t2.large 인스턴스 1개로 결합할 수 있습니다. 하지만 t2.small 인스턴스 2개의 예약을 t2.large 인스턴스 1개로 바꿀 수는 없어요. 새 예약의 풋프린트(4단위)가 원래 예약의 풋프린트(2단위)보다 크기 때문입니다.
다음 예시에서 t2.micro 인스턴스 2개(1단위)의 예약과 t2.small 인스턴스 1개(1단위)의 예약이 있어요. 두 예약을 t2.medium 인스턴스 1개(2단위)의 단일 예약으로 병합하면, 새 예약의 풋프린트가 결합된 예약들의 풋프린트와 같아집니다.
예약을 둘 이상의 예약으로 분할할 수도 있어요. 다음 예시에서 t2.medium 인스턴스(2단위)의 예약이 있어요. 이 예약을 t2.nano 인스턴스 2개(0.5단위)의 예약과 t2.micro 인스턴스 3개(1.5단위)의 예약 두 개로 나눌 수 있어요.
베어 메탈 인스턴스의 정규화 계수 (Normalization factors for bare metal instances)
metal 인스턴스가 포함된 예약을 같은 인스턴스 패밀리의 다른 크기를 사용해 수정할 수 있어요. 마찬가지로 베어 메탈이 아닌 인스턴스가 포함된 예약을 같은 인스턴스 패밀리 내의 metal 크기로 수정할 수도 있습니다. 일반적으로 베어 메탈 인스턴스는 같은 인스턴스 패밀리 내에서 사용 가능한 가장 큰 인스턴스 크기와 같은 크기예요. 예를 들어 i3.metal 인스턴스는 i3.16xlarge 인스턴스와 같은 크기이므로 정규화 계수도 같습니다.
다음 표는 베어 메탈 인스턴스가 있는 인스턴스 패밀리에서 베어 메탈 인스턴스 크기의 정규화 계수를 설명해요. metal 인스턴스의 정규화 계수는 다른 인스턴스 크기와 달리 인스턴스 패밀리에 따라 달라집니다.
| 인스턴스 크기 | 정규화 계수 |
|---|---|
| a1.metal | 32 |
| m5zn.metal | x2iezn.metal |
| c6g.metal | c6gd.metal |
| c5n.metal | 144 |
| c5.metal | c5d.metal |
| c6i.metal | c6id.metal |
| u-18tb1.metal | u-24tb1.metal |
| u-6tb1.metal | u-9tb1.metal |
예를 들어 i3.metal 인스턴스의 정규화 계수는 128이에요. 기본 임대 Amazon Linux/Unix i3.metal 예약 인스턴스를 구매했다면 예약을 다음과 같이 분할할 수 있어요.
i3.16xlarge는i3.metal인스턴스와 같은 크기이므로 정규화 계수는 128(128/1)입니다.i3.metal인스턴스 1개의 예약은i3.16xlarge인스턴스 1개로 수정될 수 있어요.i3.8xlarge는i3.metal인스턴스의 절반 크기이므로 정규화 계수는 64(128/2)입니다.i3.metal인스턴스 1개의 예약은i3.8xlarge인스턴스 2개로 분할될 수 있어요.i3.4xlarge는i3.metal인스턴스의 1/4 크기이므로 정규화 계수는 32(128/4)입니다.i3.metal인스턴스 1개의 예약은i3.4xlarge인스턴스 4개로 분할될 수 있어요.
수정 요청 제출 (Submit modification requests)
예약 인스턴스를 수정하기 전에 적용 가능한 제한 사항을 읽었는지 확인하세요. 인스턴스 크기를 수정하기 전에는 수정하고자 하는 원래 예약들의 총 인스턴스 크기 풋프린트를 계산하고, 새 구성의 총 인스턴스 크기 풋프린트와 일치하는지 확인하세요.
콘솔 (Console)
예약 인스턴스를 수정하려면
- Scope: 구성이 가용 영역에 적용될지 전체 리전에 적용될지 선택해요.
- Availability Zone: 필요한 가용 영역을 선택해요. 리전(regional) 예약 인스턴스에는 해당되지 않아요.
- Instance type: 필요한 인스턴스 유형을 선택해요. 결합된 구성이 원래 구성의 인스턴스 크기 풋프린트와 같아야 해요.
- Count: 인스턴스 수를 지정해요. 예약 인스턴스를 여러 구성으로 분할하려면 count를 줄이고 Add를 선택한 뒤 추가 구성의 count를 지정하세요. 예를 들어 count 10의 단일 구성이 있다면 count를 6으로 바꾸고 count 4의 구성을 추가할 수 있어요. 이 과정은 새 예약 인스턴스가 활성화된 후 원래 예약 인스턴스를 퇴역시킵니다.
수정 결과:
- 성공적인 수정 요청으로 만들어진 새 예약 인스턴스
- 실패한 수정 요청 후의 원래 예약 인스턴스
AWS CLI
예약 인스턴스를 수정하려면
modify-reserved-instances 명령을 사용해요. 구성 세부 정보를 JSON 파일로 제공할 수 있어요.
aws ec2 modify-reserved-instances \
--reserved-instances-ids b847fa93-e282-4f55-b59a-1342f5bd7c02 \
--target-configurations file://configuration.json
수정 요청의 상태를 확인하려면
describe-reserved-instances-modifications 명령을 사용해요. 상태는 processing, fulfilled, failed입니다.
aws ec2 describe-reserved-instances-modifications \
--reserved-instances-modification-ids rimod-d3ed4335-b1d3-4de6-ab31-0f13aaf46687 \
--query ReservedInstancesModifications[].Status
PowerShell
예약 인스턴스를 수정하려면
Edit-EC2ReservedInstance cmdlet을 사용해요. 구성 세부 정보를 Amazon.EC2.Model.ReservedInstancesConfiguration 유형의 객체로 제공할 수 있어요.
Edit-EC2ReservedInstance `
-ReservedInstancesId b847fa93-e282-4f55-b59a-1342f5bd7c02 `
-TargetConfiguration $configuration
수정 요청의 상태를 확인하려면
Get-EC2ReservedInstancesModification cmdlet을 사용해요. 상태는 processing, fulfilled, failed입니다.
Get-EC2ReservedInstancesModification `
-ReservedInstancesModificationId rimod-d3ed4335-b1d3-4de6-ab31-0f13aaf46687 | `
Select Status
수정 요청 트러블슈팅 (Troubleshoot modification requests)
요청한 대상 구성 설정이 고유했다면 요청이 처리 중이라는 메시지를 받아요. 이 시점에 Amazon EC2는 수정 요청의 파라미터가 유효하다는 것만 확인한 상태예요. 수정 요청은 처리 중에 용량을 사용할 수 없어 여전히 실패할 수 있습니다.
어떤 상황에서는 확인 대신 불완전하거나 실패한 수정 요청을 나타내는 메시지를 받을 수 있어요. 이런 메시지의 정보를 또 다른 수정 요청을 다시 제출하기 위한 출발점으로 사용하세요. 요청을 제출하기 전에 적용 가능한 제한 사항을 읽었는지 확인해야 해요.
선택한 모든 예약 인스턴스가 수정을 위해 처리될 수 없음
Amazon EC2가 수정할 수 없는 예약 인스턴스를 식별해 나열해줘요. 이런 메시지를 받으면 Amazon EC2 콘솔의 Reserved Instances 페이지로 가서 예약 인스턴스의 정보를 확인하세요.
수정 요청 처리 오류
수정할 예약 인스턴스를 하나 이상 제출했는데 어떤 요청도 처리될 수 없어요. 수정 중인 예약 수에 따라 다른 버전의 메시지를 받을 수 있습니다.
Amazon EC2가 요청을 처리할 수 없는 이유를 표시해줘요. 예를 들어 수정 중인 예약 인스턴스의 하나 이상의 하위 집합에 대해 동일한 대상 구성(가용 영역과 플랫폼의 조합)을 지정했을 수 있어요. 수정 요청을 다시 제출해보되, 예약의 인스턴스 세부 정보가 일치하고 수정 중인 모든 하위 집합의 대상 구성이 고유한지 확인하세요.