

# EC2 플릿에 대한 튜토리얼
<a name="fleet-tutorials"></a>

EC2 플릿을 구성하는 방법에는 여러 가지가 있습니다. 선택하는 구성은 구체적인 사용 사례에 따라 다릅니다.

다음 튜토리얼에서는 몇 가지 가능한 사용 사례를 다루고 이를 구현하는 데 필요한 태스크를 제공합니다.


| 사용 사례: | 튜토리얼 링크 | 
| --- | --- | 
|  **인스턴스 가중치를 사용하여 EC2 플릿의 가용성과 성능을 관리할 수 있습니다.** 인스턴스 가중치를 사용하면 EC2 플릿의 각 인스턴스 유형에 가중치를 할당하여 서로 상대적인 컴퓨팅 용량과 성능을 반영합니다. 가중치를 기반으로 플릿은 원하는 목표 용량을 충족할 수 있는 한 지정된 인스턴스 유형을 원하는 대로 조합하여 사용할 수 있습니다.  | [튜토리얼: 인스턴스 가중치를 사용하도록 EC2 플릿 구성](ec2-fleet-instance-weighting-walkthrough.md) | 
|  **온디맨드 용량을 사용하여 피크 기간 동안 가용성을 보장하면서 저렴한 비용으로 스팟 용량을 추가로 활용할 수 있습니다.** 온디맨드 인스턴스를 기본 용량으로 사용하도록 EC2 플릿을 구성하여 피크 기간 동안 가용 용량을 확보합니다. 또한 스팟 인스턴스에 일부 용량을 할당하여 할인된 가격 혜택을 받을 수 있습니다. 단, Amazon EC2에 용량이 다시 필요할 경우 스팟 인스턴스가 중단될 수 있다는 점에 유의하세요.  | [튜토리얼: 온디맨드 인스턴스를 기본 용량으로 사용하도록 EC2 플릿 구성](ec2-fleet-on-demand-walkthrough.md) | 
|  **용량 예약을 사용하여 온디맨드 인스턴스용 컴퓨팅 용량을 예약할 수 있습니다.** 먼저 온디맨드 인스턴스를 시작할 때 `targeted` 용량 예약을 사용하도록 EC2 플릿을 구성합니다. 용량 요구 사항이 엄격하고 특정 수준의 장기 또는 단기 용량 보증이 요구되는 비즈니스 크리티컬 워크로드를 실행하는 경우, 필요할 때 언제든지 필요한 기간 동안 Amazon EC2 용량에 액세스할 수 있도록 용량 예약을 생성하는 것이 좋습니다.  | [튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스를 시작하도록 EC2 플릿 구성](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md) | 
|  **용량 블록을 사용하여 인기가 높은 GPU 인스턴스를 ML 워크로드에 맞게 예약할 수 있습니다.** 인스턴스를 용량 블록으로 시작하도록 EC2 플릿을 구성합니다.  | [튜토리얼: 인스턴스를 용량 블록으로 시작하도록 EC2 플릿을 구성](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md) | 
|  **AWS 조직 전체에서 유휴 용량의 용도를 일시적으로 변경하고 비용을 절감하려면 중단 가능한 용량 예약을 사용합니다.** AWS 조직 내 예비 용량을 나타내는 중단 가능한 용량 예약으로 인스턴스를 시작하도록 EC2 플릿을 구성합니다. 용량 소유자는 언제든 용량을 회수할 수 있습니다. 회수되면 EC2가 2분 전에 고지하고 인스턴스를 종료합니다.  | [튜토리얼: 인스턴스를 중단 가능한 용량 예약으로 시작하도록 EC2 플릿을 구성](ec2-fleet-launch-instances-interruptible-cr-walkthrough.md) | 

# 튜토리얼: 인스턴스 가중치를 사용하도록 EC2 플릿 구성
<a name="ec2-fleet-instance-weighting-walkthrough"></a>

이 자습서에서는 Example Corp이라는 가상의 회사를 통해 인스턴스 가중치를 사용하여 EC2 집합을 요청하는 프로세스를 설명합니다.

## 목표
<a name="ec2-fleet-instance-weighting-walkthrough-objective"></a>

제약 회사인 Example Corp은 암 퇴치 효과가 있는 화합물을 검출하는 데 Amazon EC2의 컴퓨팅 능력을 사용하려고 합니다.

## 계획
<a name="ec2-fleet-instance-weighting-walkthrough-planning"></a>

Example Corp은 먼저 [스팟 모범 사례](https://aws.amazon.com/ec2/spot/getting-started/#bestpractices)를 살펴봅니다. 그런 다음 Example Corp이 EC2 집합에 대해 다음과 같은 요구 사항을 결정합니다.

**인스턴스 유형**  
Example Corp은 최소 60GB 메모리와 8개의 가상 CPU(vCPU)로 최적의 성능을 자랑하는 컴퓨팅 및 메모리 집약적 애플리케이션을 사용하고 있습니다. 하지만 최저 가격으로 이러한 애플리케이션 리소스를 극대화하는 것이 목표입니다. 그 결과 다음 EC2 인스턴스 유형 중 하나가 이러한 요건에 적합할 것이라는 결정을 내립니다.


| 인스턴스 유형 | 메모리(GiB) | vCPUs | 
| --- | --- | --- | 
|  r3.2xlarge  |  61  |  8  | 
|  r3.4xlarge  |  122  |  16  | 
|  r3.8xlarge  |  244  |  32  | 

**목표 용량 단위**  
인스턴스 가중치를 부여했을 때 목표 용량은 인스턴스 수(기본값) 또는 코어(vCPU), 메모리(GiB) 및 스토리지(GB)와 같은 요소의 조합과 동일할 수 있습니다. 그래서 Example Corp은 단위 1개당 애플리케이션의 기본 용량(RAM 60GB, vCPU 8개)을 고려하여 기본 용량의 20배가 요구에 적합하겠다고 결정하고 그래서 EC2 플릿 요청의 대상 용량을 20개으로 설정합니다.

**인스턴스 가중치**  
목표 용량이 결정되자 이제는 인스턴스 가중치를 계산합니다. 각 인스턴스 유형에 대한 인스턴스 가중치를 계산하기 위해, 다음과 같이 목표 용량에 이르기 위해 필요한 각 인스턴스 유형의 단위를 결정합니다.
+ r3.2xlarge(61.0GB, 8 vCPU) = 단위 20개 중 1개
+ r3.4xlarge(122.0GB, 16 vCPU) = 단위 20개 중 2개
+ r3.8xlarge(244.0GB, 32 vCPU) = 단위 20개 중 4개

따라서 Example Corp은 EC2 집합 요청 시 1, 2 및 4의 인스턴스 가중치를 각 시작 구성에 할당합니다.

**단위 시간당 가격**  
Example Corp은 인스턴스 시간당 [온디맨드 가격](https://aws.amazon.com/ec2/pricing/)을 시작 가격으로 사용합니다. 그 밖에 최근 스팟 가격을 사용하거나, 둘을 조합할 수도 있습니다. 단위 시간당 가격을 계산하려면 인스턴스 시간당 시작 가격을 가중치로 나눕니다. 예:


| 인스턴스 유형 | 온디맨드 가격 | 인스턴스 가중치 | 단위 시간당 가격 | 
| --- | --- | --- | --- | 
|  r3.2xLarge  |  0.7 USD  |  1  |  0.7 USD  | 
|  r3.4xLarge  |  1.4 USD  |  2  |  0.7 USD  | 
|  r3.8xLarge  |  2.8 USD  |  4  |  0.7 USD  | 

Example Corp은 단위 시간당 글로벌 가격으로 0.7 USD를 사용하기 때문에 세 가지 인스턴스 유형 모두에서 경쟁력이 있습니다. 또한 `r3.8xlarge` 시작 사양에서 단위 시간당 글로벌 가격으로 0.7 USD를, 단위 시간당 특정 가격으로 0.9 USD를 사용할 수도 있습니다.

## 권한 확인
<a name="ec2-fleet-instance-weighting-walkthrough-permissions"></a>

Example Corp은 EC2 집합을 생성하기 전에 필요한 권한을 가진 IAM 역할이 있는지 확인합니다. 자세한 내용은 [EC2 Fleet 사전 조건](ec2-fleet-prerequisites.md) 섹션을 참조하세요.

## 시작 템플릿 생성
<a name="ec2-fleet-instance-weighting-create-launch-template"></a>

그런 다음 Example Corp에서 시작 템플릿을 생성합니다. 시작 템플릿 ID는 다음 단계에서 사용됩니다. 자세한 내용은 [Amazon EC2 시작 템플릿 생성](create-launch-template.md) 섹션을 참조하세요.

## EC2 집합 생성
<a name="ec2-fleet-instance-weighting-walkthrough-request"></a>

Example Corp은 EC2 집합에 대해 다음 구성으로 `config.json` 파일을 생성합니다. 다음 예제에서는 리소스 식별자를 사용자 고유의 리소스 식별자로 바꿉니다.

```
{ 
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851", 
                "Version": "1"
            }, 
            "Overrides": [
                {
                    "InstanceType": "r3.2xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 1
                },
                {
                    "InstanceType": "r3.4xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 2
                },
                {
                    "InstanceType": "r3.8xlarge", 
                    "MaxPrice": "0.90", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 4
                }
            ]
        }
    ], 
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20, 
        "DefaultTargetCapacityType": "spot"
    }
}
```

Example Corp은 다음 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 명령을 사용하여 EC2 집합을 생성합니다.

```
aws ec2 create-fleet --cli-input-json file://config.json
```

자세한 내용은 [EC2 집합 생성](create-ec2-fleet.md) 섹션을 참조하세요.

## 이행
<a name="ec2-fleet-instance-weighting-walkthrough-fulfillment"></a>

할당 전략에서는 스팟 용량 풀이 어느 스팟 인스턴스 풀에서 온 것인지 확인합니다.

`lowest-price` 전략(기본 전략)을 사용할 경우 스팟 인스턴스는 이행 시점에 단위당 최저 가격의 풀에서 옵니다. 20단위의 용량을 제공하기 위해 EC2 집합이 `r3.2xlarge` 인스턴스 20개(20을 1로 나눈 값), `r3.4xlarge` 인스턴스 10개(20을 2로 나눈 값) 또는 `r3.8xlarge` 인스턴스 5개(20을 4로 나눈 값)를 시작합니다.

Example Corp에서 `diversified` 전략을 사용한 경우에는 스팟 인스턴스가 3개의 풀 전부에서 옵니다. EC2 집합은 총 20개의 단위에 대해 `r3.2xlarge` 인스턴스 6개(6개 단위 제공), `r3.4xlarge` 인스턴스 3개(6개 단위 제공), `r3.8xlarge` 인스턴스 2개(8개 단위 제공)를 시작합니다.

# 튜토리얼: 온디맨드 인스턴스를 기본 용량으로 사용하도록 EC2 플릿 구성
<a name="ec2-fleet-on-demand-walkthrough"></a>

이 자습서에서는 ABC Online이라는 가상의 회사를 통해 기본 용량인 온디맨드와 스팟 용량(사용할 수 있는 경우)이 있는 EC2 집합를 요청하는 프로세스를 설명합니다.

## 목표
<a name="ec2-fleet-on-demand-walkthrough-objective"></a>

식당 배달 회사인 ABC Online은 EC2 인스턴스 유형 및 구매 옵션에 Amazon EC2 용량을 프로비저닝하여 원하는 규모, 성능 및 비용을 달성하는 것을 목표로 합니다.

## 계획
<a name="ec2-fleet-on-demand-walkthrough-planning"></a>

ABC Online은 피크 시간을 처리하기 위해 고정된 용량이 필요하지만, 더 낮은 비용으로 추가 용량을 이용하고자 합니다. 이 회사는 EC2 플릿에 대해 다음 요구 사항을 결정합니다.
+ 온디맨드 인스턴스 용량 - ABC Online은 온디맨드 인스턴스 15개가 있어야 피크 시간의 트래픽을 수용할 수 있습니다.
+ 스팟 인스턴스 용량 - 성능을 높이면서도 가격을 낮추기 위해 ABC Online은 5개의 스팟 인스턴스를 프로비저닝할 계획입니다.

## 권한 확인
<a name="ec2-fleet-on-demand-walkthrough-permissions"></a>

ABC Online은 EC2 집합을 생성하기 전에 필요한 권한을 가진 IAM 역할이 있는지 확인합니다. 자세한 내용은 [EC2 Fleet 사전 조건](ec2-fleet-prerequisites.md) 섹션을 참조하세요.

## 시작 템플릿 생성
<a name="ec2-fleet-on-demand-walkthrough-create-launch-template"></a>

그런 다음 ABC Online에서 시작 템플릿을 생성합니다. 시작 템플릿 ID는 다음 단계에서 사용됩니다. 자세한 내용은 [Amazon EC2 시작 템플릿 생성](create-launch-template.md) 섹션을 참조하세요.

## EC2 집합 생성
<a name="ec2-fleet-on-demand-walkthrough-request"></a>

ABC Online은 EC2 집합에 대해 다음 구성으로 `config.json` 파일을 생성합니다. 다음 예제에서는 리소스 식별자를 사용자 고유의 리소스 식별자로 바꿉니다.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851",
                "Version": "2"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity":15,
        "DefaultTargetCapacityType": "spot"
    }
}
```

ABC Online은 다음 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 명령을 사용하여 EC2 집합을 생성합니다.

```
aws ec2 create-fleet --cli-input-json file://config.json
```

자세한 내용은 [EC2 집합 생성](create-ec2-fleet.md) 섹션을 참조하세요.

## 이행
<a name="ec2-fleet-on-demand-walkthrough-fulfillment"></a>

할당 전략에 따라 온디맨드 용량은 항상 충족되고 남아 있는 대상 용량이 사용 가능한 용량이 있는 경우 스팟으로 충족됩니다.

# 튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스를 시작하도록 EC2 플릿 구성
<a name="ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough"></a>

이 자습서에서는 EC2 플릿이 `targeted` 용량 예약으로 온디맨드 인스턴스를 시작하기 위해 수행해야 하는 모든 단계를 안내합니다.

먼저 온디맨드 인스턴스를 시작할 때 `targeted` 온디맨드 용량 예약을 사용하도록 플릿을 구성하는 방법에 대해 학습합니다. 또한 총 온디맨드 목표 용량이 사용 가능한 미사용 용량 예약 수를 초과할 경우 플릿이 지정된 할당 전략을 사용하여 나머지 목표 용량을 시작할 인스턴스 풀을 선택하도록 플릿을 구성하는 방법도 학습합니다.

**EC2 플릿 구성**

이 튜토리얼에서 플릿은 다음과 같이 구성됩니다.
+ 목표 용량: 온디맨드 인스턴스 10개
+ 총 미사용 `targeted` 용량 예약: 6개(플릿의 온디맨드 목표 용량인 온디맨드 인스턴스 10개보다 적음)
+ 용량 예약 풀 수: 2개(`us-east-1a` 및 `us-east-1b`)
+ 풀당 용량 예약 수: 3개
+ 온디맨드 할당 전략: `lowest-price`(미사용 용량 예약 수가 온디맨드 목표 용량보다 적을 경우 플릿에서 온디맨드 할당 전략을 기반으로 나머지 온디맨드 용량을 시작할 풀 결정)

  `lowest-price` 할당 전략 대신 `prioritized` 할당 전략을 사용할 수도 있습니다.

**온디맨드 인스턴스를 `targeted` 용량 예약으로 시작하려면 다음과 같이 여러 단계를 수행해야 합니다.**
+ [

## 1단계: 용량 예약 생성
](#ec2-fleet-odcr-step1)
+ [

## 2단계: 용량 예약 리소스 그룹 생성
](#ec2-fleet-odcr-step2)
+ [

## 3단계: 용량 예약을 용량 예약 리소스 그룹에 추가
](#ec2-fleet-odcr-step3)
+ [

## (선택 사항) 4단계: 리소스 그룹에서 용량 예약 확인
](#ec2-fleet-odcr-step4)
+ [

## 5단계: 용량 예약이 특정 리소스 그룹을 대상으로 하도록 지정하는 시작 템플리트 생성
](#ec2-fleet-odcr-step5)
+ [

## (선택 사항) 6단계: 시작 템플릿 설명
](#ec2-fleet-odcr-step6)
+ [

## 7단계: EC2 플릿 생성
](#ec2-fleet-odcr-step7)
+ [

## (선택사항) 8단계: 나머지 미사용 용량 예약 수 확인
](#ec2-fleet-odcr-step8)

## 1단계: 용량 예약 생성
<a name="ec2-fleet-odcr-step1"></a>

[create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) 명령을 사용하여 `us-east-1a`에 대해 용량 예약 3개, `us-east-1b`에 대해 또 다른 용량 예약 3개를 생성합니다. 가용 영역을 제외하고 용량 예약의 다른 속성은 동일합니다.

**`us-east-1a`의 용량 예약 3개**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1a \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

결과 용량 예약 ID의 예

```
cr-1234567890abcdef1
```

**`us-east-1b`의 용량 예약 3개**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1b \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

결과 용량 예약 ID의 예

```
cr-54321abcdef567890
```

## 2단계: 용량 예약 리소스 그룹 생성
<a name="ec2-fleet-odcr-step2"></a>

`resource-groups` 서비스 및 [create-group](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/create-group.html) 명령을 사용하여 용량 예약 리소스 그룹을 생성합니다. 이 예제에서 리소스 그룹의 이름은 `my-cr-group`입니다. 리소스 그룹을 생성해야 하는 이유에 대한 자세한 내용은 [용량 예약을 사용하여 EC2 플릿의 온디맨드 용량 예약](ec2-fleet-on-demand-capacity-reservations.md) 섹션을 참조하세요.

```
aws resource-groups create-group \
    --name my-cr-group \
    --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
```

## 3단계: 용량 예약을 용량 예약 리소스 그룹에 추가
<a name="ec2-fleet-odcr-step3"></a>

`resource-groups` 서비스 및 [group-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/group-resources.html) 명령을 사용하여 1단계에서 생성한 용량 예약을 용량 예약 리소스 그룹에 추가합니다. 해당 ARN을 기준으로 온디맨드 용량 예약을 참조해야 합니다.

```
aws resource-groups group-resources \
    --group my-cr-group \
    --resource-arns \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890
```

출력 예시

```
{
   "Failed": [], 
   "Succeeded": [ 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" 
   ] 
}
```

## (선택 사항) 4단계: 리소스 그룹에서 용량 예약 확인
<a name="ec2-fleet-odcr-step4"></a>

`resource-groups` 서비스 및 [list-group-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/list-group-resources.html) 명령을 사용하여 선택적으로 리소스 그룹을 설명하여 해당 용량 예약을 확인합니다.

```
aws resource-groups list-group-resources --group my-cr-group
```

출력 예시

```
{
    "ResourceIdentifiers": [
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1"
        },
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
        }
    ]
}
```

## 5단계: 용량 예약이 특정 리소스 그룹을 대상으로 하도록 지정하는 시작 템플리트 생성
<a name="ec2-fleet-odcr-step5"></a>

[Create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 명령을 사용하여, 사용할 용량 예약을 지정할 시작 템플릿을 생성합니다. 이 예에서 플릿은 리소스 그룹에 추가된 `targeted` 용량 예약을 사용합니다. 따라서 시작 템플릿 데이터는 용량 예약이 특정 리소스 그룹을 대상으로 하도록 지정합니다. 이 예제에서 시작 템플릿의 이름은 `my-launch-template`입니다.

```
aws ec2 create-launch-template \
    --launch-template-name my-launch-template \
    --launch-template-data \
        '{"ImageId": "ami-0123456789example",
          "CapacityReservationSpecification": 
            {"CapacityReservationTarget": 
                { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" }
            }
        }'
```

## (선택 사항) 6단계: 시작 템플릿 설명
<a name="ec2-fleet-odcr-step6"></a>

[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) 명령을 사용하여 구성을 확인할 시작 템플릿을 선택적으로 설명합니다.

```
aws ec2 describe-launch-template-versions --launch-template-name my-launch-template
```

출력 예시

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-01234567890example",
            "LaunchTemplateName": "my-launch-template",
            "VersionNumber": 1,
            "CreateTime": "2021-01-19T20:50:19.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0947d2ba12ee1ff75",
                "CapacityReservationSpecification": {
                    "CapacityReservationTarget": {
                        "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group"
                    }
                }
            }
        }
    ]
}
```

## 7단계: EC2 플릿 생성
<a name="ec2-fleet-odcr-step7"></a>

시작할 인스턴스에 대한 구성 정보를 지정하는 EC2 플릿을 생성합니다. 다음 EC2 플릿 구성에서는 이 예제와 관련된 구성만 보여 줍니다. 시작 템플릿 `my-launch-template`은 5단계에서 생성한 시작 템플릿입니다. 두 개의 인스턴스 풀이 있으며, 각각 인스턴스 유형(`c5.xlarge`)은 동일하지만 가용 영역(`us-east-1a` 및 `us-east-1b`)은 다릅니다. 인스턴스 풀의 가격은 가용 영역이 아닌 리전에 대해 정의되기 때문에 동일합니다. 총 목표 용량은 10이고 기본 목표 용량 유형은 `on-demand`입니다. 온디맨드 할당 전략은 `lowest-price`입니다. 용량 예약에 대한 사용 전략은 `use-capacity-reservations-first`입니다.

**참고**  
플릿 유형은 `instant`여야 합니다. 다른 플릿 유형에서는 `use-capacity-reservations-first`를 지원하지 않습니다.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

이전 구성을 사용하여 `instant` 플릿을 생성하면 목표 용량을 충족하기 위해 다음 10개의 인스턴스가 시작됩니다.
+ 용량 예약은 먼저 다음과 같이 6개의 온디맨드 인스턴스를 시작하는 데 사용됩니다.
  + 3개의 온디맨드 인스턴스는 `us-east-1a`에서 3개의 `c5.xlarge` `targeted` 용량 예약으로 시작됩니다.
  + 3개의 온디맨드 인스턴스는 `us-east-1b`에서 3개의 `c5.xlarge` `targeted` 용량 예약으로 시작됩니다.
+ 목표 용량을 충족하기 위해 4개의 추가 온디맨드 인스턴스가 온디맨드 할당 전략에 따라 일반 온디맨드 용량으로 시작됩니다(이 예에서는 `lowest-price`). 그러나 풀의 가격이 동일하기 때문에(가용 영역이 아닌 리전별로 가격이 책정되기 때문에) 플릿은 나머지 4개의 온디맨드 인스턴스를 두 풀 중 하나로 시작합니다.

## (선택사항) 8단계: 나머지 미사용 용량 예약 수 확인
<a name="ec2-fleet-odcr-step8"></a>

플릿이 시작된 후, 선택적으로 [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html)를 실행하여 미사용 용량 예약이 몇 개나 남아 있는지 확인할 수 있습니다. 이 예에서는 모든 풀의 용량 예약이 모두 사용되었음을 보여 주는 다음 응답이 나타납니다.

```
{ "CapacityReservationId":  "cr-111",
     "InstanceType":  "c5.xlarge",  
     "AvailableInstanceCount":  0
}

 { "CapacityReservationId":  "cr-222",
     "InstanceType":  "c5.xlarge", 
     "AvailableInstanceCount":  0
}
```

# 튜토리얼: 인스턴스를 용량 블록으로 시작하도록 EC2 플릿을 구성
<a name="ec2-fleet-launch-instances-capacity-blocks-walkthrough"></a>

이 자습서에서는 EC2 플릿에서 용량 블록으로 인스턴스를 내보내려면 수행해야 하는 단계를 안내합니다.

대부분의 경우 EC2 플릿 요청의 대상 용량은 목표로 하는 용량 블록 예약의 가용 용량 이하여야 합니다. 용량 블록 예약의 한도를 초과하는 목표 용량 요청은 충족되지 않습니다. 대상 용량 요청이 용량 블록 예약 한도를 초과하면 용량 블록 예약 한도를 초과하는 용량에 대한 `Insufficient Capacity Exception`이 발생합니다.

**참고**  
용량 블록의 경우 EC2 플릿이 대체되어 원하는 목표 용량의 나머지에 대한 온디맨드 인스턴스를 시작하지 않습니다.

가용 용량 블록 예약에서 요청된 목표 용량을 EC2 플릿에서 충족할 수 없으면 EC2 플릿에서는 최대한 많은 용량을 충족하고, 시작할 수 있었던 인스턴스를 반환합니다. 모든 인스턴스가 프로비저닝될 때까지 EC2 플릿 직접 호출을 다시 반복할 수 있습니다.

EC2 플릿 요청 구성 후에는 용량 블록 예약 시작 날짜까지 기다려야 합니다. 아직 시작되지 않은 용량 블록으로 내보내도록 EC2 플릿에 요청하면 `Insufficient Capacity Error`가 발생합니다.

용량 블록 예약이 활성화되면 EC2 플릿 API를 직접적으로 호출하고 선택한 파라미터에 따라 인스턴스를 용량 블록에 프로비저닝할 수 있습니다. 용량 블록에서 실행 중인 인스턴스는 인스턴스를 수동으로 중지 또는 종료할 때까지 또는 용량 블록 예약이 종료될 때 Amazon EC2에서 인스턴스를 종료할 때까지 계속 실행됩니다.

용량 블록에 대한 자세한 내용은 [ML용 용량 블록](ec2-capacity-blocks.md) 섹션을 참조하세요.

**고려 사항**
+ 용량 블록으로 인스턴스를 시작하는 데는 `instant` 유형의 EC2 플릿 요청만 지원됩니다. 자세한 내용은 [instant 유형의 EC2 플릿 구성](instant-fleet.md) 섹션을 참조하세요.
+ 동일한 EC2 플릿 요청의 여러 용량 블록은 지원되지 않습니다.
+ `capacity-block`을 `DefaultTargetCapacity`로 설정하는 동안 `OnDemandTargetCapacity` 또는 `SpotTargetCapacity`를 사용하는 것도 지원되지 않습니다.
+ `DefaultTargetCapacityType`이 `capacity-block`으로 설정되었으면 `OnDemandOptions::CapacityReservationOptions`를 제공할 수 없습니다. 예외가 발생합니다.

**용량 블록으로 인스턴스를 시작하도록 EC2 플릿을 구성하려면 다음을 수행하세요.**

1. **시작 템플릿을 생성합니다.**

   시작 템플릿에서 다음을 수행합니다.
   + `InstanceMarketOptionsRequest`의 경우 `MarketType`을 `capacity-block`으로 설정합니다.
   + 용량 블록 예약을 대상으로 하려면 `CapacityReservationID`에 대해 용량 블록 예약 ID를 지정합니다.

   시작 템플릿 이름과 버전을 기록해 둡니다. 다음 단계에서 이 정보를 사용합니다.

   시작 템플릿 생성에 대한 자세한 내용은 [Amazon EC2 시작 템플릿 생성](create-launch-template.md) 섹션을 참조하세요.

1. **EC2 플릿을 구성합니다.**

   다음 EC2 플릿 구성으로 `config.json` 파일을 생성합니다. 다음 예제에서는 리소스 식별자를 사용자 고유의 리소스 식별자로 바꿉니다.

   EC2 플릿 구성에 대한 자세한 내용은 [EC2 집합 생성](create-ec2-fleet.md) 섹션을 참조하세요.

   ```
   { 
       "LaunchTemplateConfigs": [
           {
               "LaunchTemplateSpecification": {
                   "LaunchTemplateName": "CBR-launch-template", 
                   "Version": "1"
               }, 
               "Overrides": [
                   {
                       "InstanceType": "p5.48xlarge", 
                       "AvailabilityZone": "us-east-1a"   
                   },
               ]
           }
       ], 
       "TargetCapacitySpecification": {
           "TotalTargetCapacity": 10, 
           "DefaultTargetCapacityType": "capacity-block"
       },
       "Type": "instant"
   }
   ```

1. **플릿을 시작합니다.**

   다음 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 명령을 사용합니다.

   ```
   aws ec2 create-fleet --cli-input-json file://config.json
   ```

   자세한 내용은 [EC2 집합 생성](create-ec2-fleet.md#create-ec2-fleet-procedure) 섹션을 참조하세요.

# 튜토리얼: 인스턴스를 중단 가능한 용량 예약으로 시작하도록 EC2 플릿을 구성
<a name="ec2-fleet-launch-instances-interruptible-cr-walkthrough"></a>

이 자습서에서는 EC2 플릿에서 중단 가능한 용량 예약으로 인스턴스를 내보내려면 수행해야 하는 단계를 안내합니다.

중단 가능한 용량 예약은 AWS 조직 내 온디맨드 용량 예약 소유자가 임대해주는 예비 용량을 나타냅니다. 이러한 예약은 중단 가능한 워크로드에 적합합니다. 용량 소유자는 중단 2분 전 고지를 통해 언제든 용량을 회수할 수 있으며, EC2가 인스턴스를 종료하기 때문입니다. 중단 가능한 용량 예약에 대한 자세한 내용은 [중단 가능한 용량 예약](interruptible-capacity-reservations.md) 섹션을 참조하세요.

EC2 플릿 요청의 목표 용량은 목표로 하는 중단 가능 용량 예약의 사용 가능한 용량보다 작거나 같아야 합니다. 요청된 용량이 중단 가능한 용량 예약을 초과하는 경우, EC2 플릿은 최대한 많은 인스턴스를 시작하고 API 응답에 시작된 인스턴스를 보고합니다.

중단 가능한 용량 예약에서 실행되는 인스턴스는 사용자가 수동으로 중지 또는 종료하거나 용량 소유자가 용량을 회수할 때까지 계속 실행됩니다. 용량 소유자가 용량을 회수하면 Amazon EC2는 인스턴스를 종료하기 2분 전 Amazon EventBridge 알림을 보냅니다.

## 고려 사항
<a name="ec2-fleet-interruptible-cr-considerations"></a>
+ 중단 가능한 용량 예약으로 인스턴스를 시작하는 데는 `instant` 유형의 EC2 플릿 요청만 지원됩니다.
+ `reserved-capacity`를 `DefaultTargetCapacityType`으로 설정하는 동안 `OnDemandTargetCapacity` 또는 `SpotTargetCapacity`를 사용하는 것도 지원되지 않습니다.
+ 서로 다른 중단 가능한 용량 예약을 대상으로 하는 여러 시작 템플릿을 지정하면 EC2 플릿은 일치하는 모든 예약에 걸쳐 인스턴스를 프로비저닝합니다.
+ 중단 가능한 용량 예약의 경우, EC2 플릿은 원하는 목표 용량의 나머지에 대한 온디맨드 인스턴스 또는 스팟 인스턴스 시작으로 돌아가지 않습니다.

## 권한 확인
<a name="ec2-fleet-interruptible-cr-verify-permissions"></a>

EC2 플릿을 생성하기 전에 필요한 권한을 가진 IAM 역할이 있는지 확인합니다. 자세한 내용은 [EC2 Fleet 사전 조건](ec2-fleet-prerequisites.md) 섹션을 참조하세요.

중단 가능한 용량 예약으로 인스턴스를 시작하려면 다음 단계를 수행해야 합니다.

## 1단계: 시작 템플릿 생성
<a name="ec2-fleet-interruptible-cr-step1"></a>

[Create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 명령을 사용하여, 대상으로 지정할 중단 가능한 용량 예약을 포함하는 시작 템플릿을 생성합니다. 시작 템플릿에서 `MarketType`을 `interruptible-capacity-reservation`으로 설정하고 중단 가능한 용량 예약의 `CapacityReservationId`를 지정합니다.

실행 템플릿 구성 예시:

```
{
    "LaunchTemplateName": "interruptible-cr-launch-template",
    "LaunchTemplateData": {
        "InstanceType": "m5.large",
        "ImageId": "ami-0abcdef1234567890",
        "CapacityReservationSpecification": {
            "CapacityReservationTarget": {
                "CapacityReservationId": "cr-0123456789abcdef0"
            }
        },
        "InstanceMarketOptions": {
            "MarketType": "interruptible-capacity-reservation"
        }
    }
}
```

출력 예시

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-0123456789example",
        "LaunchTemplateName": "interruptible-cr-launch-template",
        "CreateTime": "2026-03-12T10:00:00.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

자세한 내용은 [Amazon EC2 시작 템플릿 생성](create-launch-template.md) 섹션을 참조하세요.

## 2단계: EC2 플릿 구성
<a name="ec2-fleet-interruptible-cr-step2"></a>

시작 템플릿과 목표 용량을 지정하는 EC2 플릿에 대한 구성 파일을 생성합니다. 다음 구성은 1단계에서 생성한 시작 템플릿 `interruptible-cr-launch-template`을 사용합니다.

`reserved-capacity`를 `DefaultTargetCapacityType`으로 사용할 때 `ReservationType`을 `interruptible-capacity-reservation`으로 설정하여 `ReservedCapacityOptions`를 지정해야 합니다.

다음 콘텐츠가 포함된 `config.json`이라는 파일을 생성합니다.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "interruptible-cr-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "reserved-capacity"
    },
    "ReservedCapacityOptions": {
        "ReservationType": ["interruptible-capacity-reservation"]
    },
    "Type": "instant"
}
```

주요 구성 파라미터:


| 파라미터 | 설명 | 
| --- | --- | 
| DefaultTargetCapacityType | 인스턴스를 예약 용량으로 시작해야 함을 나타내려면 reserved-capacity로 설정합니다. | 
| ReservedCapacityOptions | 예약 용량 유형을 지정합니다. 중단 가능한 용량 예약의 경우 ReservationType을 ["interruptible-capacity-reservation"]으로 설정합니다. | 
| Type | instant로 설정해야 합니다. 중단 가능한 용량 예약에는 인스턴트 플릿만 지원됩니다. | 

## 3단계: 플릿 시작 및 결과 보기
<a name="ec2-fleet-interruptible-cr-step3"></a>

[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 명령을 사용하여 플릿을 생성합니다.

```
aws ec2 create-fleet \
    --cli-input-json file://config.json
```

이전 구성을 사용하여 `instant` 플릿을 생성한 후, EC2 플릿이 목표 용량을 충족하기 위해 중단 가능한 용량 예약으로 인스턴스 10개를 시작합니다.

**참고**  
플릿이 전체 목표 용량을 충족할 수 없는 경우 응답에는 시작된 인스턴스와 채워지지 않은 용량에 대한 오류가 포함됩니다.

출력 예시

```
{
    "FleetId": "fleet-12345678-1234-1234-1234-123456789012",
    "Instances": [
        {
            "LaunchTemplateAndOverrides": {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            },
            "Lifecycle": "interruptible-capacity-reservation",
            "InstanceIds": [
                "i-0123456789example1",
                "i-0123456789example2",
                "i-0123456789example3",
                "i-0123456789example4",
                "i-0123456789example5",
                "i-0123456789example6",
                "i-0123456789example7",
                "i-0123456789example8",
                "i-0123456789example9",
                "i-0123456789example0"
            ],
            "InstanceType": "m5.large",
            "Platform": "Linux/UNIX"
        }
    ],
    "Errors": []
}
```

자세한 내용은 [EC2 집합 생성](create-ec2-fleet.md) 섹션을 참조하세요.

## 정리
<a name="ec2-fleet-interruptible-cr-cleanup"></a>

요금이 발생하지 않도록 하려면 더 이상 필요하지 않은 인스턴스를 종료합니다. EC2는 용량 소유자가 용량을 회수할 때 중단 가능한 용량 예약으로 시작된 인스턴스도 자동으로 종료합니다.

## 관련 리소스
<a name="ec2-fleet-interruptible-cr-related-resources"></a>
+ [중단 가능한 용량 예약](interruptible-capacity-reservations.md)
+ [EC2 온디맨드 용량 예약으로 컴퓨팅 용량 예약](ec2-capacity-reservations.md)
+ [EC2 플릿 사용](manage-ec2-fleet.md)
+ [EC2 집합 생성](create-ec2-fleet.md)
+ [Amazon EC2 시작 템플릿에 인스턴스 시작 파라미터 저장](ec2-launch-templates.md)