EC2 Fleet용 예제 CLI 구성

EC2 Fleet용 예제 CLI 구성 (Example CLI configurations for EC2 Fleet)

EC2 Fleet 구성을 JSON 파일로 정의하고, 그 파일을 create-fleet 명령과 함께 참조해 플릿을 생성할 수 있어요.

출처: 문서

본문

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

다음 예제들은 다양한 EC2 Fleet 사용 사례의 실행 구성을 보여줘요. 구성 파라미터에 대한 자세한 내용은 create-fleet를 참고하세요.

예제 목록:

  1. 기본 구매 옵션으로 Spot 인스턴스 실행하기
  2. 기본 구매 옵션으로 On-Demand 인스턴스 실행하기
  3. 기본 용량으로 On-Demand 인스턴스 실행하기
  4. 여러 Capacity Reservations를 사용해 On-Demand 인스턴스 실행하기
  5. 총 목표 용량이 미사용 Capacity Reservations 수를 초과할 때 Capacity Reservations로 On-Demand 인스턴스 실행하기
  6. 대상 지정(targeted) Capacity Reservations로 On-Demand 인스턴스 실행하기
  7. Capacity Rebalancing을 구성해 대체 Spot 인스턴스 실행하기
  8. capacity-optimized 플릿에서 Spot 인스턴스 실행하기
  9. 우선순위가 있는 capacity-optimized 플릿에서 Spot 인스턴스 실행하기
  10. price-capacity-optimized 플릿에서 Spot 인스턴스 실행하기
  11. 속성 기반 인스턴스 유형 선택 구성하기
  12. Capacity Reservation Resource Group을 사용해 여러 Capacity Reservation 유형으로 인스턴스 실행하기

instant 유형 플릿에 대한 추가 CLI 예제는 "Configure an EC2 Fleet of type instant"를 참고하세요.

예제 1: 기본 구매 옵션으로 Spot 인스턴스 실행하기

다음 예제는 EC2 Fleet에 필요한 최소 파라미터(실행 템플릿, 목표 용량, 기본 구매 옵션)를 지정해요. 실행 템플릿은 실행 템플릿 ID와 버전 번호로 식별돼요. 플릿의 목표 용량은 2개 인스턴스이고, 기본 구매 옵션은 spot이므로 플릿이 Spot 인스턴스 2개를 실행해요.

{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "spot"
    }
}

예제 2: 기본 구매 옵션으로 On-Demand 인스턴스 실행하기

다음 예제는 필요한 최소 파라미터를 지정해요. 기본 구매 옵션이 on-demand이므로 플릿이 On-Demand 인스턴스 2개를 실행해요.

{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "on-demand"
    }
}

예제 3: 기본 용량으로 On-Demand 인스턴스 실행하기

다음 예제는 플릿의 총 목표 용량 2개와 On-Demand 인스턴스 목표 용량 1개를 지정해요. 기본 구매 옵션은 spot이에요. 플릿은 지정대로 On-Demand 인스턴스 1개를 실행하지만 총 목표 용량을 채우기 위해 인스턴스 1개를 더 실행해야 해요. 차액에 대한 구매 옵션은 TotalTargetCapacity - OnDemandTargetCapacity = DefaultTargetCapacityType으로 계산되어 Spot 인스턴스 1개가 실행돼요.

{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "OnDemandTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    }
}

예제 4~6: Capacity Reservations로 On-Demand 인스턴스 실행하기

예제 4는 여러 Capacity Reservations를 사용해 On-Demand 인스턴스를 실행하는 구성을 보여줘요. 예제 5는 총 목표 용량이 미사용 Capacity Reservations 수를 초과할 때 미사용 용량을 우선 사용하고 부족분을 어떻게 메우는지 보여줘요. 예제 6은 대상 지정(tagged) Capacity Reservations로 On-Demand 인스턴스를 실행하는 구성을 보여줘요. 이 구성들은 실행 템플릿과 함께 Capacity Reservation ID를 CapacityReservationId로 지정해요.

예제 7: Capacity Rebalancing 구성하기

예제 7은 Capacity Rebalancing을 구성해 대체 Spot 인스턴스를 시작하는 방법을 보여줘요. EC2 Fleet이 Capacity Rebalancing을 활성화하면, Spot 인스턴스가 회수(reclaim)될 위험이 있을 때 EC2 Fleet이 대체 인스턴스를 시작해요. MaintenanceStrategies.CapacityRebalance.ReplacementStrategy를 통해 교체 유형을 구성해요.

예제 8: capacity-optimized 플릿에서 Spot 인스턴스 실행하기

예제 8은 Spot 할당 전략이 용량 최적화인 플릿을 구성하는 방법을 보여줘요. AllocationStrategy를 capacity-optimized로 설정하면 EC2 Fleet이 가장 적합한 용량을 가진 Spot 용량 풀에서 Spot 인스턴스를 실행해 중단 가능성을 최소화해요.

{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                { "InstanceType": "r4.2xlarge" },
                { "InstanceType": "m4.2xlarge" },
                { "InstanceType": "c5.2xlarge" }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 50,
        "DefaultTargetCapacityType": "spot"
    }
}

예제 9: 우선순위가 있는 capacity-optimized 플릿에서 Spot 인스턴스 실행하기

예제 9는 Spot 할당 전략이 용량을 최적화하면서 최선 노력(best-effort)으로 우선순위를 사용하는 플릿의 구성 방법을 보여줘요.

capacity-optimized-prioritized 할당 전략을 사용할 때 Priority 파라미터로 Spot 용량 풀의 우선순위를 지정할 수 있어요. 숫자가 낮을수록 우선순위가 높아요. 여러 풀에 같은 우선순위를 줄 수도 있어요. 풀에 우선순위를 설정하지 않으면 그 풀은 우선순위에서 마지막으로 간주돼요.

풀을 우선순위화하려면 AllocationStrategy를 capacity-optimized-prioritized로 설정해야 해요. EC2 Fleet은 용량을 먼저 최적화하지만 우선순위를 최선 노력으로 존중해요(예: 우선순위 존중이 optimal capacity 프로비저닝 능력에 큰 영향을 주지 않는 경우). 중단 가능성을 최소화해야 하고 특정 인스턴스 유형 선호가 중요한 워크로드에 좋은 옵션이에요.

다음 예제에서 세 실행 사양이 세 개의 Spot 용량 풀을 지정해요. 각 풀은 우선순위가 있고, 낮을수록 높은 우선순위예요. 목표 용량은 Spot 인스턴스 50개이고, EC2 Fleet은 최선 노력으로 가장 높은 우선순위 풀에 50개를 실행하려 하지만 용량을 먼저 최적화해요.

{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                        {
                           "InstanceType": "r4.2xlarge",
                           "Priority": 1,
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       },
                       {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                  ]
             }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"
    }
}

예제 10: price-capacity-optimized 플릿에서 Spot 인스턴스 실행하기

예제 10은 용량과 가장 낮은 가격을 모두 최적화하는 플릿의 구성 방법을 보여줘요. 가격을 고려하면서 용량을 최적화하려면 Spot AllocationStrategy를 price-capacity-optimized로 설정해야 해요.

{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                { "InstanceType": "r4.2xlarge" },
                { "InstanceType": "m4.2xlarge" },
                { "InstanceType": "c5.2xlarge" }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 50,
        "DefaultTargetCapacityType": "spot"
    }
}

예제 11: 속성 기반 인스턴스 유형 선택 구성하기

예제 11은 실행 템플릿에 인스턴스 유형 대신 속성 요구사항(vCPU 수, 메모리 등)을 지정하는 **속성 기반 인스턴스 유형 선택(attribute-based instance type selection)**을 구성하는 방법을 보여줘요. EC2 Fleet이 요구 속성을 충족하는 인스턴스 유형 풀을 자동으로 선택해요.

예제 12: Capacity Reservation Resource Group으로 여러 유형 실행하기

예제 12는 Capacity Reservation Resource Group을 사용해 여러 유형의 Capacity Reservations로 인스턴스를 실행하는 방법을 보여줘요. 리소스 그룹 ID를 지정하면 EC2 Fleet이 그룹 안의 여러 용량 예약 유형에 걸쳐 인스턴스를 배치할 수 있어요.

더 알아보기