EC2 플릿에 대한 속성 기반 인스턴스 유형 선택 - Amazon Elastic Compute Cloud

EC2 플릿에 대한 속성 기반 인스턴스 유형 선택

EC2 플릿을 생성할 때 플릿에서 온디맨드 인스턴스 및 스팟 인스턴스를 구성하기 위해 하나 이상의 인스턴스 유형을 지정해야 합니다. 인스턴스 유형을 수동으로 지정하는 작업 대신 인스턴스에 있어야 하는 속성을 지정하면 Amazon EC2는 해당 속성으로 모든 인스턴스 유형을 식별합니다. 이를 속성 기반 인스턴스 유형 선택이라고 합니다. 예를 들어 인스턴스에 필요한 최소 및 최대 vCPU 수를 지정할 수 있으며, EC2 플릿은 해당 vCPU 요구 사항을 충족하는 사용 가능한 인스턴스 유형을 사용하여 인스턴스를 시작합니다.

속성 기반 인스턴스 유형 선택은 컨테이너 또는 웹 플릿 실행, 빅 데이터 처리, 지속적 통합 및 배포(CI/CD) 도구 구현 등 사용할 인스턴스 유형을 유연하게 처리하는 워크로드 및 프레임워크에 이상적입니다.

장점

속성 기반 인스턴스 유형을 선택하면 다음과 같은 이점이 있습니다.

  • 쉽게 올바른 인스턴스 유형 사용 - 사용 가능한 인스턴스 유형이 너무 많기 때문에 워크로드에 적합한 인스턴스 유형을 찾는 데 시간이 많이 걸릴 수 있습니다. 인스턴스 속성을 지정하면 인스턴스 유형에는 워크로드에 필요한 속성이 자동으로 포함됩니다.

  • 단순화된 구성 - EC2 플릿에 대해 여러 인스턴스 유형을 수동으로 지정하려면 각 인스턴스 유형에 대해 별도의 시작 템플릿 재정의를 생성해야 합니다. 그러나 속성 기반 인스턴스 유형을 선택할 경우 여러 인스턴스 유형을 제공하려면 시작 템플릿 또는 시작 템플릿 재정의에서 인스턴스 속성만 지정하면 됩니다.

  • 새 인스턴스 유형의 자동 사용 - 인스턴스 유형이 아닌 인스턴스 속성을 지정하면 플릿이 릴리스될 때 새로운 세대의 인스턴스 유형을 사용하여 플릿의 구성을 '나중에 교정'할 수 있습니다.

  • 인스턴스 유형 유연성 - 인스턴스 유형이 아닌 인스턴스 속성을 지정하면 EC2 플릿은 스팟 인스턴스를 시작하기 위해 다양한 인스턴스 유형 중에서 선택할 수 있으며, 이때 인스턴스 유형 유연성에 대한 스팟 모범 사례를 따릅니다.

속성 기반 인스턴스 유형 선택 작동 방법

플릿 구성에서 속성 기반 인스턴스 유형 선택을 사용하려면 인스턴스 유형 목록을 인스턴스에 필요한 인스턴스 속성 목록으로 바꿉니다. EC2 플릿은 지정된 인스턴스 속성을 가진 사용 가능한 인스턴스 유형에서 인스턴스를 시작합니다.

인스턴스 속성 유형

컴퓨팅 요구 사항을 표현하기 위해 지정할 수 있는 다음과 같은 몇 가지 인스턴스 속성이 있습니다.

  • vCPU 수 – 인스턴스당 최소 및 최대 vCPU 수입니다.

  • 메모리 - 인스턴스당 최소 및 최대 메모리 GiB입니다.

  • 로컬 스토리지 - 로컬 스토리지에 EBS를 사용할지 아니면 인스턴스 스토어 볼륨을 사용할지입니다.

  • 성능 버스트 기능 – T4g, T3a, T3 및 T2 유형을 포함한 T 인스턴스 패밀리를 사용할지 여부입니다.

각 속성 및 기본값에 대한 설명은 Amazon EC2 API Reference(Amazon EC2 API 레퍼런스)의 InstanceRequirements를 참조하세요.

속성 기반 인스턴스 유형 선택을 구성하는 곳

콘솔을 사용하는지 아니면 AWS CLI를 사용하는지에 따라 속성 기반 인스턴스 유형 선택에 대한 인스턴스 속성을 다음과 같이 지정할 수 있습니다.

콘솔에서 다음 플릿 구성 요소에 인스턴스 속성을 지정할 수 있습니다.

  • 시작 템플릿 및 플릿 요청의 시작 템플릿 참조에서

AWS CLI에서 다음 플릿 구성 요소 중 하나 또는 모두에 인스턴스 속성을 지정할 수 있습니다.

  • 시작 템플릿 및 플릿 요청의 시작 템플릿 참조에서

  • 시작 템플릿 재정의에서

    다른 AMI를 사용하는 인스턴스를 혼합하려면 여러 시작 템플릿 재정의에서 인스턴스 속성을 지정할 수 있습니다. 예를 들어 다른 인스턴스 유형은 x86 및 ARM 기반 프로세서를 사용할 수 있습니다.

  • 출시 사양에서

플릿을 프로비저닝할 때 EC2 플릿이 속성 기반 인스턴스 유형 선택을 사용하는 방법

EC2 플릿은 다음과 같은 방식으로 플릿을 프로비저닝합니다.

  • EC2 플릿은 지정한 속성을 가진 인스턴스 유형을 식별합니다.

  • EC2 플릿은 가격 보호를 사용하여 제외할 인스턴스 유형을 결정합니다.

  • EC2 플릿은 인스턴스 유형이 일치하는 AWS 리전 또는 가용 영역을 기반으로 인스턴스 시작을 고려할 용량 풀을 결정합니다.

  • EC2 플릿은 지정된 할당 전략을 적용하여 인스턴스를 시작할 용량 풀을 결정합니다.

    속성 기반 인스턴스 유형 선택은 플릿을 프로비저닝할 용량 풀을 선택하지 않습니다. 이는 할당 전략의 작업입니다. 지정된 속성을 가진 인스턴스 유형이 많을 수 있으며 그 중 일부는 비용이 많이 들 수 있습니다. 스팟 및 온디맨드에 대한 기본 할당 전략 lowest-price에서는 EC2 플릿이 가장 저렴한 용량 풀에서 인스턴스를 시작하도록 보장합니다.

    할당 전략을 지정하면 EC2 플릿은 지정된 할당 전략에 따라 인스턴스를 시작합니다.

    • 스팟 인스턴스의 경우 속성 기반 인스턴스 유형 선택은 price-capacity-optimized, capacity-optimizedlowest-price 할당 전략을 지원합니다.

    • 스팟 인스턴스의 경우 속성 기반 인스턴스 유형 선택은 lowest-price 할당 전략을 지원합니다.

  • 지정된 인스턴스 속성을 가진 인스턴스 유형에 대한 용량이 없으면 인스턴스를 시작할 수 없으며 플릿이 오류를 반환합니다.

가격 보호

가격 보호는 EC2 플릿이 사용자가 지정한 속성에 적합하더라도 너무 비싼 인스턴스 유형을 사용하지 못하도록 방지하는 기능입니다. 가격 보호를 사용하려면 기준 금액을 설정합니다. 그런 다음, Amazon EC2가 해당 속성이 있는 인스턴스 유형을 선택하면 임계값 이상의 가격이 책정된 인스턴스 유형을 제외합니다.

Amazon EC2가 기준 금액을 계산하는 방법은 다음과 같습니다.

  • Amazon EC2는 먼저 속성과 일치하는 인스턴스 유형 중에서 가장 저렴한 인스턴스 유형을 식별합니다.

  • 그러면 Amazon EC2는 가격 보호 파라미터에 지정한 값(백분율로 표시)을 가져와 식별된 인스턴스 유형의 가격과 곱합니다. 결과는 기준 금액으로 사용되는 가격입니다.

온디맨드 인스턴스와 스팟 인스턴스에는 별도의 기준 금액이 있습니다.

속성 기반 인스턴스 유형 선택으로 플릿을 생성하면 기본적으로 가격 보호가 사용됩니다. 기본값을 유지할 수도 있고 직접 지정할 수도 있습니다.

가격 보호를 끌 수도 있습니다. 가격 보호 기준이 없음을 나타내려면 999999와 같은 높은 백분율 값을 지정합니다.

최저 가격의 인스턴스 유형을 식별하는 방법

Amazon EC2는 지정된 속성과 일치하는 인스턴스 유형 중 가격이 가장 낮은 인스턴스 유형을 식별하여 기준 금액의 기준이 될 가격을 결정합니다. 이는 다음과 같은 방식으로 수행됩니다.

  • 먼저 속성과 일치하는 현재 세대 C, M 또는 R 인스턴스 유형을 살펴봅니다. 일치하는 항목이 발견되면 가격이 가장 낮은 인스턴스 유형을 식별합니다.

  • 일치하는 항목이 없으면 속성과 일치하는 현재 세대 인스턴스 유형을 모두 찾습니다. 일치하는 항목이 발견되면 가격이 가장 낮은 인스턴스 유형을 식별합니다.

  • 일치하는 항목이 없으면 속성과 일치하는 이전 세대 인스턴스 유형을 찾아 가격이 가장 낮은 인스턴스 유형을 식별합니다.

온디맨드 인스턴스 가격 보호

온디맨드 인스턴스 유형의 가격 보호 기준은 식별된 가격이 가장 낮은 온디맨드 인스턴스 유형(OnDemandMaxPricePercentageOverLowestPrice)보다 높은 백분율로 계산됩니다. 지불할 의사가 있는 비율을 더 높게 지정합니다. 이 파라미터를 지정하지 않으면 식별된 가격보다 20% 더 높은 가격 보호 기준을 계산하는 데 기본값 20이 사용됩니다.

예를 들어 식별된 온디맨드 인스턴스 가격이 0.4271이고 25를 지정하는 경우 가격 기준 금액은 0.4271보다 25% 높습니다. 이는 0.4271 * 1.25 = 0.533875로 계산됩니다. 계산된 가격은 온디맨드 인스턴스에 대해 지불할 의사가 있는 최대 가격이며, 이 예제에서 Amazon EC2는 비용이 0.533875를 초과하는 모든 온디맨드 인스턴스 유형을 제외합니다.

스팟 인스턴스 가격 보호

기본적으로 Amazon EC2는 다양한 인스턴스 유형 중에서 일관되게 선택할 수 있도록 최적의 스팟 인스턴스 가격 보호를 자동으로 적용합니다. 가격 보호를 직접 수동으로 설정할 수도 있습니다. 하지만 Amazon EC2가 자동으로 수행하면 스팟 용량이 충족될 가능성을 높일 수 있습니다.

다음 옵션 중 하나를 사용하여 가격 보호를 수동으로 지정할 수 있습니다. 가격 보호를 수동으로 설정하는 경우 첫 번째 옵션을 사용하는 것이 좋습니다.

  • 식별된 최저 가격의 온디맨드 인스턴스 유형 비율[MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]

    예를 들어 식별된 온디맨드 인스턴스 가격이 0.4271이고 60을 지정하는 경우 가격 기준 금액은 0.4271의 60%입니다. 이는 0.4271 * 0.60 = 0.25626으로 계산됩니다. 계산된 가격은 스팟 인스턴스에 대해 지불할 의사가 있는 최대 가격이며, 이 예제에서 Amazon EC2는 비용이 0.25626를 초과하는 모든 스팟 인스턴스 유형을 제외합니다.

  • 식별된 최저 가격보다 높은 가격의 스팟 인스턴스 유형 비율[SpotMaxPricePercentageOverLowestPrice]

    예를 들어 식별된 스팟 인스턴스 유형 가격이 0.1808이고 25를 지정하는 경우 가격 기준 금액은 0.1808보다 25% 높습니다. 이는 0.1808 * 1.25 = 0.226으로 계산됩니다. 계산된 가격은 스팟 인스턴스에 대해 지불할 의사가 있는 최대 가격이며, 이 예제에서 Amazon EC2는 비용이 0.266를 초과하는 모든 스팟 인스턴스 유형을 제외합니다. 스팟 가격은 변동될 수 있으므로 가격 보호 기준도 변동될 수 있으므로 이 파라미터를 사용하지 않는 것이 좋습니다.

가격 보호 임계값 지정

가격 보호 임계값 지정

EC2 플릿을 생성하는 동안 속성 기반 인스턴스 유형 선택을 위해 플릿을 구성하고 다음을 수행합니다.

  • 온디맨드 인스턴스 가격 보호 임계값을 지정하려면 JSON 구성 파일의 InstanceRequirements 구조에서 OnDemandMaxPricePercentageOverLowestPrice에 대해 가격 보호 임계값을 백분율로 입력합니다.

  • 스팟 인스턴스 가격 보호 기준을 지정하려면 JSON 구성 파일의 InstanceRequirements 구조에서 다음 파라미터 중 하나를 지정합니다.

    • MaxSpotPriceAsPercentageOfOptimalOnDemandPrice에 가격 보호 기준을 백분율로 입력합니다.

    • SpotMaxPricePercentageOverLowestPrice에 가격 보호 기준을 백분율로 입력합니다.

플릿 생성에 대한 자세한 내용은 속성 기반 인스턴스 유형 선택으로 EC2 플릿 생성 섹션을 참조하세요.

참고

EC2 플릿을 생성할 때 TargetCapacityUnitTypevcpu 또는 memory-mib로 설정하면 가격 보호 임계값이 인스턴스당 가격 대신 vCPU당 또는 메모리당 가격을 기준으로 적용됩니다.

고려 사항

  • EC2 플릿에서 인스턴스 유형 또는 인스턴스 속성을 지정할 수 있지만 둘 다 동시에 지정할 수는 없습니다.

    CLI를 사용할 때 시작 템플릿 재정의가 시작 템플릿을 재정의합니다. 예를 들어 시작 템플릿에 인스턴스 유형이 포함되어 있고 시작 템플릿 재정의에 인스턴스 속성이 포함되어 있는 경우 인스턴스 속성으로 식별되는 인스턴스는 시작 템플릿의 인스턴스 유형을 재정의합니다.

  • CLI를 사용하고 인스턴스 속성을 재정의로 지정할 때 가중치나 우선순위를 지정할 수도 없습니다.

  • 요청 구성에서 최대 4개의 InstanceRequirements 구조를 지정할 수 있습니다.

속성 기반 인스턴스 유형 선택으로 EC2 플릿 생성

AWS CLI를 사용하여 속성 기반 인스턴스 유형 선택을 사용하도록 플릿을 구성할 수 있습니다.

속성 기반 인스턴스 유형 선택으로 EC2 플릿을 생성하려면(AWS CLI)

create-fleet(AWS CLI) 명령을 사용하여 EC2 플릿을 생성합니다. JSON 파일에 플릿 구성을 지정합니다.

aws ec2 create-fleet \ --region us-east-1 \ --cli-input-json file://file_name.json

예제 file_name.json 파일

다음 예에는 속성 기반 인스턴스 유형 선택 방식을 사용하도록 EC2 플릿을 구성하는 파라미터가 포함되어 있으며 그 뒤에 텍스트 설명이 나옵니다.

{ "SpotOptions": { "AllocationStrategy": "price-capacity-optimized" }, "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

속성 기반 인스턴스 유형 선택을 위한 속성은 InstanceRequirements 구조에 지정되어 있습니다. 이 예에서는 2개의 속성이 지정됩니다.

  • VCpuCount - vCPU가 최소 2개로 지정되었습니다. 최대값이 지정되지 않았으므로 최대 한도는 없습니다.

  • MemoryMiB - 메모리가 최소 4MiB로 지정되었습니다. 최대값이 지정되지 않았으므로 최대 한도는 없습니다.

vCPU가 2개 이상이고 메모리가 4MiB 이상인 모든 인스턴스 유형이 식별됩니다. 단, EC2 플릿에서 플릿을 제공하는 경우 가격 보호 및 할당 전략에서 일부 인스턴스 유형이 제외될 수 있습니다.

지정 가능한 모든 속성의 목록과 설명은 Amazon EC2 API 참조에서 InstanceRequirements를 참조하세요.

참고

InstanceRequirements가 플릿 구성에 포함되어 있으면 InstanceTypeWeightedCapacity는 제외되어야 하며 인스턴스 속성과 동시에 플릿 구성을 결정할 수 없습니다.

JSON에는 다음 플릿 구성도 포함됩니다.

  • "AllocationStrategy": "price-capacity-optimized" - 플릿 내 스팟 인스턴스에 대한 할당 전략입니다.

  • "LaunchTemplateName": "my-launch-template", "Version": "1" - 시작 템플릿에 일부 인스턴스 구성 정보가 포함되지만, 지정된 인스턴스 유형이 있으면 InstanceRequirements에 지정한 속성으로 대체됩니다.

  • "TotalTargetCapacity": 20 - 목표 용량은 스팟 인스턴스 20개입니다.

  • "DefaultTargetCapacityType": "spot" - 기본 용량은 스팟 인스턴스입니다.

  • "Type": "instant" - 플릿의 요청 유형이 instant입니다.

유효한 구성과 유효하지 않은 구성의 예

AWS CLI를 사용하여 EC2 플릿을 생성하려면 플릿 구성이 유효한지 확인해야 합니다. 다음 예에서는 유효한 구성과 유효하지 않은 구성을 보여줍니다.

다음을 포함하는 구성은 유효하지 않은 것으로 간주됩니다.

  • 둘 다 InstanceRequirementsInstanceType인 단일 Overrides 구조

  • 하나는 InstanceRequirements이고 다른 하나는 InstanceType인 2개의 Overrides 구조

  • 동일한 LaunchTemplateSpecification 내에서 겹치는 속성 값을 갖는 2개의 InstanceRequirements 구조

유효한 구성: 재정의가 있는 단일 시작 템플릿

다음 구성은 유효합니다. 여기에는 하나의 시작 템플릿과 하나의 InstanceRequirements 구조를 갖는 하나의 Overrides 구조가 포함됩니다. 예제 구성에 대한 텍스트 설명은 다음과 같습니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "My-launch-template", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 2, "Max": 8 }, "MemoryMib": { "Min": 0, "Max": 10240 }, "MemoryGiBPerVCpu": { "Max": 10000 }, "RequireHibernateSupport": true } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 5000, "DefaultTargetCapacityType": "spot", "TargetCapacityUnitType": "vcpu" } } }
InstanceRequirements

속성 기반 인스턴스 선택을 사용하려면 플릿 구성에 InstanceRequirements 구조를 포함하고 플릿의 인스턴스에 대해 원하는 속성을 지정합니다.

앞의 예제에서 다음과 같은 인스턴스 속성이 지정됩니다.

  • VCpuCount - 인스턴스 유형에 최소 2개, 최대 8개의 vCPU가 있어야 합니다.

  • MemoryMiB - 인스턴스 유형에 최대 10,240MiB의 메모리가 있어야 합니다. 최소값 0은 최소 제한이 없음을 나타냅니다.

  • MemoryGiBPerVCpu - 인스턴스 유형에 vCPU당 최대 10,000GiB의 메모리가 있어야 합니다. Min 파라미터는 선택 항목입니다. 생략하면 최소 제한이 없음을 나타냅니다.

TargetCapacityUnitType

TargetCapacityUnitType 파라미터는 목표 용량의 단위를 지정합니다. 이 예에서 목표 용량은 5000이고 목표 용량 단위 유형은 vcpu입니다. 이들은 함께 원하는 목표 용량 vCPU 5,000개를 지정합니다. EC2 플릿은 플릿의 총 vCPU 수가 5,000개가 되도록 충분한 인스턴스를 시작합니다.

유효한 구성: 여러 InstanceRequirements가 있는 단일 시작 템플릿

다음 구성은 유효합니다. 하나의 시작 템플릿과 2개의 InstanceRequirements 구조를 갖는 하나의 Overrides 구조가 포함됩니다. InstanceRequirements에 지정된 속성은 값이 겹치지 않기 때문에 유효합니다. 첫 번째 InstanceRequirements 구조는 vCPU 0~2개의 VCpuCount를 지정하고 두 번째 InstanceRequirements 구조는 vCPU 4~8개를 지정합니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

유효한 구성: 각각 재정의가 있는 2개의 시작 템플릿

다음 구성은 유효합니다. 각각 하나의 InstanceRequirements 구조를 포함하는 하나의 Overrides 구조가 있는 2개의 시작 템플릿이 포함됩니다. 이 구성은 동일한 플릿에서 armx86 아키텍처 지원에 유용합니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "armLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "x86LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

유효한 구성: InstanceRequirements만 지정, 겹치는 속성 값 없음

다음 구성은 유효합니다. 각각 시작 템플릿이 있고 InstanceRequirements 구조가 포함된 Overrides 구조가 있는 2개의 LaunchTemplateSpecification 구조가 포함됩니다. InstanceRequirements에 지정한 속성은 값이 겹치지 않기 때문에 유효합니다. 첫 번째 InstanceRequirements 구조는 vCPU 0~2개의 VCpuCount를 지정하고 두 번째 InstanceRequirements 구조는 vCPU 4~8개를 지정합니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

구성이 유효하지 않음: OverridesInstanceRequirementsInstanceType 포함

다음 구성은 유효하지 않습니다. Overrides 구조에 InstanceRequirementsInstanceType이 모두 포함됩니다. Overrides에서 InstanceRequirements 또는 InstanceType 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceType": "m5.large" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

구성이 유효하지 않음: 2개의 OverridesInstanceRequirementsInstanceType 포함

다음 구성은 유효하지 않습니다. Overrides 구조에 InstanceRequirementsInstanceType이 모두 포함됩니다. InstanceRequirements 또는 InstanceType 중 하나를 지정할 수 있지만 다른 Overrides 구조라고 하더라도 둘 다 지정할 수는 없습니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "m5.large" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

구성이 유효하지 않음: 속성 값 겹침

다음 구성은 유효하지 않습니다. 2개의 InstanceRequirements 구조는 각각 "VCpuCount": {"Min": 0, "Max": 2}를 포함합니다. 이러한 속성의 값이 겹치므로 용량 풀이 중복됩니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } }, { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }

지정한 속성을 가진 인스턴스 유형 미리 보기

get-instance-types-from-instance-requirements AWS CLI 명령을 사용하여 지정한 속성과 일치하는 인스턴스 유형을 미리 봅니다. 이 기능은 인스턴스를 시작하지 않고 요청 구성에서 지정할 속성을 계산할 때 특히 유용합니다. 이 명령은 사용 가능한 용량을 고려하지 않습니다.

AWS CLI로 속성을 지정하여 인스턴스 유형 목록 미리 보기
  1. (선택 사항) 지정할 수 있는 모든 가능한 속성을 생성하려면 get-instance-types-from-instance-requirements 명령과 --generate-cli-skeleton 파라미터를 사용합니다. 선택적으로 input > attributes.json을 사용하여 출력을 파일로 지정하여 저장할 수 있습니다.

    aws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input > attributes.json

    예상 결과

    { "DryRun": true, "ArchitectureTypes": [ "i386" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "intel" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "current" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "included", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "included", "LocalStorageTypes": [ "hdd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "gpu" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "nvidia" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 }, "NetworkBandwidthGbps": { "Min": 0.0, "Max": 0.0 }, "AllowedInstanceTypes": [ "" ] }, "MaxResults": 0, "NextToken": "" }
  2. 이전 단계의 출력을 사용하여 JSON 구성 파일을 생성하고 다음과 같이 구성합니다.

    참고

    ArchitectureTypes, VirtualizationTypes, VCpuCountMemoryMiB의 값을 입력해야 합니다. 다른 속성을 생략할 수 있으며 생략 시 기본값이 사용됩니다.

    각 속성과 기본값에 대한 설명은 Amazon EC2 Command Line Reference(Amazon EC2 명령줄 레퍼런스)의 get-instance-types-from-instance-requirements를 참조하세요.

    1. ArchitectureTypes에 대해 하나 이상의 프로세서 아키텍처 유형을 지정합니다.

    2. VirtualizationTypes에 대해 하나 이상의 가상화 유형을 지정합니다.

    3. VCpuCount에 대해 최소 및 최대 vCPU 수를 지정합니다. 최소 제한을 지정하지 않으려면 Min에 대해 0을 지정합니다. 최대 제한을 지정하지 않으려면 Max 파라미터를 생략합니다.

    4. MemoryMiB에 대해 최소 및 최대 메모리 양(MiB)을 지정합니다. 최소 제한을 지정하지 않으려면 Min에 대해 0을 지정합니다. 최대 제한을 지정하지 않으려면 Max 파라미터를 생략합니다.

    5. 선택적으로 하나 이상의 다른 속성을 지정하여 반환되는 인스턴스 유형 목록을 추가로 제한할 수 있습니다.

  3. JSON 파일에서 지정한 속성이 있는 인스턴스 유형을 미리 보려면 get-instance-types-from-instance-requirements 명령을 사용하고 --cli-input-json 파라미터를 통해 JSON 파일의 이름과 경로를 지정합니다. 필요에 따라 테이블 형식으로 표시되도록 출력 형식을 지정할 수 있습니다.

    aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json \ --output table

    예제 attributes.json 파일

    이 예에서는 필수 속성이 JSON 파일에 포함되어 있습니다. 이들은 ArchitectureTypes, VirtualizationTypes, VCpuCountMemoryMiB입니다. 또한 선택적인 InstanceGenerations 속성도 포함되어 있습니다. 참고로 MemoryMiB에 대해 Max 값을 생략하여 제한이 없음을 나타낼 수 있습니다.

    { "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }

    출력 예시

    ------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || d2.xlarge || ...
  4. 필요에 맞는 인스턴스 유형을 식별한 후 플릿 요청을 구성할 때 사용할 수 있도록 사용한 인스턴스 속성을 기록해 둡니다.