

# 튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스를 시작하도록 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
}
```