スポットフリートの属性ベースのインスタンスタイプの選択 - Amazon Elastic Compute Cloud

スポットフリートの属性ベースのインスタンスタイプの選択

スポットフリートを作成するときは、フリートのオンデマンドインスタンスとスポットインスタンスを設定するための 1 つ以上のインスタンスタイプを指定する必要があります。インスタンスタイプを手動で指定する代わりに、インスタンスが持つ必要がある属性を指定でき、Amazon EC2 は、それらの属性を持つすべてのインスタンスタイプを識別します。これは 属性ベースのインスタンスタイプの選択 と呼ばれます。例えば、インスタンスに必要な vCPU の最小数と最大数を指定でき、スポットフリートはこれらの vCPU 要件を満たす使用可能なインスタンスタイプを使用してインスタンスを起動します。

属性ベースのインスタンスタイプの選択は、コンテナやウェブフリートの実行、ビッグデータの処理、継続的インテグレーションおよびデプロイ (CI/CD) ツールの実装など、使用するインスタンスタイプについて柔軟に使用できるワークロードとフレームワークに最適です。

利点

属性ベースのインスタンスタイプを選択すると、次の利点があります。

  • 利用可能なインスタンスタイプの数が多いため、ワークロードに適したインスタンスタイプを見つけるには時間がかかることがあります。インスタンス属性を指定すると、インスタンスタイプにはワークロードに必要な属性が自動的に設定されます。

  • スポットフリートに複数のインスタンスタイプを手動で指定するには、インスタンスタイプごとに個別の起動テンプレートの上書きを作成する必要があります。ただし、属性ベースのインスタンスタイプを選択すると、複数のインスタンスタイプを提供するには、起動テンプレートまたは起動テンプレートの上書きでインスタンス属性を指定するだけで済みます。

  • インスタンスタイプではなくインスタンス属性を指定すると、フリートではリリース時に新しい世代のインスタンスタイプを使用できます。これにより、フリートの設定の将来の対応性も確保されます。

  • インスタンスタイプではなくインスタンスアトリビュートを指定すると、スポットフリートは、スポットインスタンスを起動するために幅広いインスタンスタイプから選択することができ、インスタンスタイプの柔軟性というスポットのベストプラクティス に準拠することができます。

属性ベースのインスタンスタイプ選択の仕組み

フリート設定で属性ベースのインスタンスタイプの選択を使用するには、インスタンスタイプのリストをインスタンスが必要とするインスタンス属性のリストに置き換えます。スポットフリートは、指定されたインスタンス属性を持つ使用可能なインスタンスタイプでインスタンスを起動します。

インスタンス属性のタイプ

コンピューティング要件を表現するために指定できるインスタンス属性はいくつかあります。各属性の説明およびデフォルト値については、「Amazon EC2 API リファレンス」の「InstanceRequirements」を参照してください。

属性ベースのインスタンスタイプの選択を設定する場所

コンソールと AWS CLI のどちらを使用するかによって、属性ベースのインスタンスタイプ選択のインスタンス属性を次のように指定できます。

コンソールでは、次のフリート設定コンポーネントの 1 つまたは両方でインスタンス属性を指定できます。

  • 起動テンプレートでフリートリクエストの起動テンプレートを参照します

  • フリートリクエストで

AWS CLI で、以下のフリート設定コンポーネントのいずれかまたはすべてでインスタンスの属性を指定することができます。

  • 起動テンプレートでフリートリクエストの起動テンプレートを参照します

  • 起動テンプレートの上書きで

    異なる AMI を使用するインスタンスを混在させたい場合は、複数の起動テンプレートの上書きでインスタンス属性を指定できます。例えば、異なるインスタンスタイプで x86 および ARM ベースのプロセッサを使用できます。

  • 起動仕様で

フリートをプロビジョニングするときに、スポットフリートが属性ベースのインスタンスタイプの選択をどのように使用するかについて

スポットフリートは、以下の方法でフリートをプロビジョニングします。

  • スポットフリートは、指定された属性を持つインスタンスタイプを識別します。

  • スポットフリートは、料金保護を使用して、除外するインスタンスタイプを決定します。

  • スポットフリートは、インスタンスタイプが一致する AWS リージョンまたはアベイラビリティーゾーンに基づいて、インスタンスの起動を検討する容量プールを決定します。

  • スポットフリートは、指定された配分戦略を適用して、インスタンスを起動する容量プールを決定します。

    属性ベースのインスタンスタイプの選択では、フリートをプロビジョニングするキャパシティプールは選択されません。これが割り当て戦略のジョブです。指定された属性を持つインスタンスタイプが多数存在し、一部のインスタンスタイプにはコストがかかる場合があります。スポットとオンデマンドのデフォルトの割り当て戦略である lowest-price は、スポットフリートが最も安価なキャパシティプールからインスタンスを起動することを保証します。

    配分戦略を指定すると、スポットフリートは指定された配分戦略に従ってインスタンスを起動します。

    • スポットインスタンスでは、属性ベースのインスタンスタイプ選択により、capacity-optimized および lowest-price の配分戦略がサポートされます。

    • オンデマンドインスタンスでは、属性ベースのインスタンスタイプの選択は、lowest-price 配分戦略をサポートします。

  • 指定されたインスタンス属性を持つインスタンスタイプの容量がない場合、インスタンスは起動できず、フリートはエラーを返します。

料金保護

料金保護は、スポットフリートが指定した属性に適合した場合でも、コストが高すぎると考えるインスタンスタイプを使用できないようにする機能です。属性ベースのインスタンスタイプを選択してフリートを作成すると、オンデマンドインスタンスとスポットインスタンスには個別のしきい値を使用して、料金保護がデフォルトで有効になります。Amazon EC2 が属性を持つインスタンスタイプを選択すると、しきい値を超える料金が設定されたインスタンスタイプは除外されます。しきい値は、指定した属性を持つ最小コストの現行世代 M、C、または R インスタンスタイプを上回る割合 (%) で表され、最大支払い額を示します。

しきい値を指定しない場合、デフォルトで次のしきい値が使用されます。

  • オンデマンドインスタンスの場合、料金保護のしきい値は 20% に設定されます。

  • スポットインスタンスの場合、料金保護のしきい値は 100% に設定されます。

料金保護のしきい値を指定するには

スポットフリートを作成するときに、属性ベースのインスタンスタイプを選択するようにフリートを設定してから、次の手順を実行します。

  • コンソール

    オンデマンドインスタンスの料金保護のしきい値を指定するには、[Additional instance attribute] (追加のインスタンス属性) で、[On-demand price protection] (オンデマンドの料金保護) を選択してから、[Add attribute] (属性を追加) を選択します。[On-Demand price protection percentage] (オンデマンドの料金保護 (%)) で、料金保護のしきい値をパーセンテージ (%) で入力します。

    スポットインスタンスの料金保護のしきい値を指定するには、[Additional instance attribute] (追加のインスタンス属性) で、[Spot price protection] (スポットの料金保護) を選択してから、[Add attribute] (属性を追加) を選択します。[Spot price protection percentage] (スポット料金保護 (%)) で、料金保護のしきい値をパーセンテージ (%) で入力します。

  • AWS CLI

    オンデマンドインスタンスの料金保護のしきい値を指定するには、JSON 設定ファイルの InstanceRequirements 構造の OnDemandMaxPricePercentageOverLowestPrice で、料金保護のしきい値をパーセンテージ (%) で入力します。

    スポットインスタンスの料金保護のしきい値を指定するには、JSON 設定ファイルの InstanceRequirements 構造の SpotMaxPricePercentageOverLowestPrice で、料金保護のしきい値をパーセンテージ (%) で入力します。

フリートの作成の詳細については、「属性ベースのインスタンスタイプを選択してスポットフリートを作成する」を参照してください。

注記

スポットフリートを作成するときに、[Total target capacity] (合計ターゲット容量) タイプを [vCPUs] もしくは [Memory (MiB)] (メモリ (MiB)) (コンソール) に、または TargetCapacityUnitTypevcpu、もしくは memory-mib (AWS CLI) に設定すると、料金保護のしきい値は、インスタンスごとの料金ではなく、vCPU ごとまたはメモリごとの料金に基づいて適用されます。

考慮事項

  • スポットフリートでは、インスタンスタイプまたはインスタンス属性のいずれかを指定できますが、両方を同時に指定することはできません。

    CLI を使用する場合、起動テンプレートの上書きによって起動テンプレートが上書きされます。例えば、起動テンプレートにインスタンスタイプが含まれ、起動テンプレートの上書きにインスタンス属性が含まれている場合、インスタンス属性によって識別されるインスタンスは、起動テンプレートのインスタンスタイプを上書きします。

  • CLI を使用していて、インスタンス属性の上書きを指定する場合、重みまたは優先順位も指定できません。

  • リクエスト設定では、最大 4 つの InstanceRequirements 構造を指定できます。

属性ベースのインスタンスタイプを選択してスポットフリートを作成する

属性ベースのインスタンスタイプ選択を使用するようにフリートを設定するには、Amazon EC2 コンソールまたは AWS CLI を使用します。

コンソールを使用してスポットフリートを作成するには

属性ベースのインスタンスタイプの選択にスポットフリートを設定するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] (スポットリクエスト) を選択した後、[Request Spot Instances] (スポットインスタンスのリクエスト) を選択します。

  3. 手順に従ってスポットフリートを作成します。詳細については、「定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)」を参照してください。

    スポットフリートを作成するときに、属性ベースのインスタンスタイプ選択にフリートを次のように設定します。

    1. [Instance type requirements] (インスタンスタイプの要件) では、[Specify instance attributes that match your compute requirements] (コンピューティング要件に一致するインスタンス属性を指定する) を選択します。

    2. [vCPUs] に、希望する vCPU の最小数と最大数を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

    3. [Memory (GiB)] (メモリ (GiB)) に、希望するメモリの最小値と最大値を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

    4. (オプション) [Additional instance attributes] (その他のインスタンス属性) では、オプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性は、リクエストにさらに制約を追加します。

    5. (オプション) [Preview matching instance types] (一致するインスタンスタイプをプレビューする) を展開して、指定した属性を持つインスタンスタイプを表示します。

AWS CLI を使用したスポットフリートの作成

スポットフリートを作成するには (AWS CLI)
  • スポットフリートリクエストを作成するには、request-spot-fleet (AWS CLI) コマンドを使用します。JSON ファイルでフリート設定を指定します。

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

次の JSON ファイルには、スポット群の設定時に指定できるすべてのパラメータが含まれています。属性ベースのインスタンスタイプ選択のパラメータは、InstanceRequirements 構造に配置されています。各属性の説明およびデフォルト値については、「Amazon EC2 API リファレンス」の「InstanceRequirements」を参照してください。

注記

InstanceRequirements がフリート設定に含まれる場合、InstanceTypeWeightedCapacity は除外しなければならず、インスタンス属性と同時にフリート設定を決定することはできません。

{ "DryRun": true, "SpotFleetRequestConfig": { "AllocationStrategy": "diversified", "OnDemandAllocationStrategy": "lowestPrice", "SpotMaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "ClientToken": "", "ExcessCapacityTerminationPolicy": "default", "FulfilledCapacity": 0.0, "OnDemandFulfilledCapacity": 0.0, "IamFleetRole": "", "LaunchSpecifications": [ { "SecurityGroups": [ { "GroupName": "", "GroupId": "" } ], "AddressingType": "", "BlockDeviceMappings": [ { "DeviceName": "", "VirtualName": "", "Ebs": { "DeleteOnTermination": true, "Iops": 0, "SnapshotId": "", "VolumeSize": 0, "VolumeType": "st1", "KmsKeyId": "", "Throughput": 0, "OutpostArn": "", "Encrypted": true }, "NoDevice": "" } ], "EbsOptimized": true, "IamInstanceProfile": { "Arn": "", "Name": "" }, "ImageId": "", "InstanceType": "vt1.24xlarge", "KernelId": "", "KeyName": "", "Monitoring": { "Enabled": true }, "NetworkInterfaces": [ { "AssociatePublicIpAddress": true, "DeleteOnTermination": true, "Description": "", "DeviceIndex": 0, "Groups": [ "" ], "Ipv6AddressCount": 0, "Ipv6Addresses": [ { "Ipv6Address": "" } ], "NetworkInterfaceId": "", "PrivateIpAddress": "", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "" } ], "SecondaryPrivateIpAddressCount": 0, "SubnetId": "", "AssociateCarrierIpAddress": true, "InterfaceType": "", "NetworkCardIndex": 0, "Ipv4Prefixes": [ { "Ipv4Prefix": "" } ], "Ipv4PrefixCount": 0, "Ipv6Prefixes": [ { "Ipv6Prefix": "" } ], "Ipv6PrefixCount": 0 } ], "Placement": { "AvailabilityZone": "", "GroupName": "", "Tenancy": "dedicated" }, "RamdiskId": "", "SpotPrice": "", "SubnetId": "", "UserData": "", "WeightedCapacity": 0.0, "TagSpecifications": [ { "ResourceType": "placement-group", "Tags": [ { "Key": "", "Value": "" } ] } ], "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "intel" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "excluded", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "required", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "fpga" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "t4" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ], "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "t4g.large", "SpotPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "current" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "excluded", "BurstablePerformance": "excluded", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "included", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "gpu" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "xilinx" ], "AcceleratorNames": [ "vu9p" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "SpotPrice": "", "TargetCapacity": 0, "OnDemandTargetCapacity": 0, "OnDemandMaxTotalPrice": "", "SpotMaxTotalPrice": "", "TerminateInstancesWithExpiration": true, "Type": "request", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "InstanceInterruptionBehavior": "hibernate", "LoadBalancersConfig": { "ClassicLoadBalancersConfig": { "ClassicLoadBalancers": [ { "Name": "" } ] }, "TargetGroupsConfig": { "TargetGroups": [ { "Arn": "" } ] } }, "InstancePoolsToUseCount": 0, "Context": "", "TargetCapacityUnitType": "memory-mib", "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "", "Value": "" } ] } ] } }

有効な設定と無効な設定の例

AWS CLI を使用してスポットフリートを作成する場合は、フリート設定が有効であることを確認する必要があります。次の例は、有効な設定と無効な設定を示しています。

次のものが含まれている場合、設定は無効と見なされます。

  • InstanceRequirements および InstanceType を持つ 1 つの Overrides 構造

  • 一つは InstanceRequirements、もう一つは InstanceType を持つ 2 つの Overrides 構造

  • 同じ LaunchTemplateSpecification 内で属性値が重複している 2 つの InstanceRequirements 構造

有効な設定: 上書きを含む単一の起動テンプレート

以下の設定は有効です。これには、1 つの起動テンプレートと、InstanceRequirements 構造を含む 1 つの Overrides が含まれています。以下に、構成例をテキストで説明します。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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 } } ] } ], "TargetCapacity": 5000, "OnDemandTargetCapacity": 0, "TargetCapacityUnitType": "vcpu" } }
InstanceRequirements

属性ベースのインスタンス選択を使用するには、フリート設定に InstanceRequirements 構造を含め、フリート内のインスタンスに必要な属性を指定する必要があります。

前の例に、以下のインスタンス属性が指定されています。

  • VCpuCount - インスタンスタイプには、2 個以上、最大 8 個の vCPU が必要です。

  • MemoryMiB - インスタンスタイプには最大 10,240 MiB のメモリが必要です。最小数が 0 の場合、最小制限がないことを示します。

  • MemoryGiBPerVCpu - インスタンスタイプには、vCPU あたり最大 10,000 GiB のメモリが必要です。Min パラメータはオプションです。省略すると、最小制限がないことを示します。

TargetCapacityUnitType

TargetCapacityUnitType パラメータは、ターゲット容量の単位を指定します。この例では、ターゲット容量は 5000 であり、ターゲット容量ユニットタイプは vcpu で、これを組み合わせて 5,000 vCPU の希望するターゲット容量を指定します。スポットフリートは、フリート内の vCPU の総数が 5,000 vCPU になるように、十分なインスタンスを起動します。

有効な設定: 複数のインスタンス要件を持つ単一の起動テンプレート

以下の設定は有効です。これには、1 つの起動テンプレートと、InstanceRequirements 構造を含む 2 つの Overrides が含まれています。InstanceRequirements で指定された属性は有効です。最初の InstanceRequirements 構造が 0~2 vCPU のうち VCpuCount が指定し、2 つ目の InstanceRequirements 構造では 4~8 vCPU が指定されています。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

有効な設定: 2 つの起動テンプレート、それぞれに上書きがある

以下の設定は有効です。これには 2 つの起動テンプレートが含まれ、各起動テンプレートには 1 つの InstanceRequirements 構造を含む Overrides 構造が 1 つ含まれています。この設定は、同じフリートで armx86 のアーキテクチャをサポートする場合に有効です。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

設定が無効です: OverridesInstanceRequirements および InstanceType を含んでいる

以下は設定が有効ではありません。Overrides 構造体には InstanceRequirements および InstanceType が両方含まれています。Overrides では、InstanceRequirements または InstanceType のどちらかを指定できますが、両方は指定できません。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceType": "m5.large" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

設定が無効です: 2 つの OverridesInstanceRequirements および InstanceType が含まれている

以下は設定が有効ではありません。Overrides 構造に InstanceRequirements および InstanceType が両方含まれています。異なる Overrides 構造にある場合、InstanceRequirements または InstanceType を指定できますが、両方を指定することはできません。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

有効な設定: InstanceRequirements のみ指定され、重複する属性値なし

以下の設定は有効です。2 つの LaunchTemplateSpecification 構造が含まれ、各構造にぞれぞれ起動テンプレートと、Overrides 構造を含む InstanceRequirements 構造が含まれています。InstanceRequirements で指定された属性は有効です。最初の InstanceRequirements 構造が 0~2 vCPU のうち VCpuCount が指定し、2 つ目の InstanceRequirements 構造では 4~8 vCPU が指定されています。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

設定が無効です: 重複する属性値

以下は設定が有効ではありません。2 つの InstanceRequirements 構造がそれぞれ "VCpuCount": {"Min": 0, "Max": 2} を含んでいます。これらの属性の値が重複するため、容量プールが重複します。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "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 } } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

指定された属性でインスタンスタイプをプレビューする

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": [ "x86_64_mac" ], "VirtualizationTypes": [ "paravirtual" ], "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": "excluded", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "required", "LocalStorageTypes": [ "hdd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "xilinx" ], "AcceleratorNames": [ "t4" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } }, "MaxResults": 0, "NextToken": "" }
  2. 前のステップの出力を使用して JSON 設定ファイルを作成し、次のように設定します。

    注記

    ArchitectureTypesVirtualizationTypesVCpuCount、および MemoryMiB の値を指定する必要があります。その他の属性は省略できます。省略すると、デフォルト値が使用されます。

    各属性およびそのデフォルト値の説明については、「Amazon EC2 コマンドラインリファレンス」の「get-instance-types-from-instance-requirements」を参照してください。

    1. ArchitectureTypes に、1 つ以上のタイプのプロセッサアーキテクチャを指定します。

    2. VirtualizationTypes に、1 つまたは複数のタイプの仮想化を指定します。

    3. VCpuCount に、vCPU の最小数と最大数を指定します。最小制限を指定しない場合は、Min で、0 を指定します。最大制限を指定しない場合は、Max パラメータを省略します。

    4. MemoryMiB に、最小値と最大値を MiB 単位で指定します。最小制限を指定しない場合は、Min で、0 を指定します。最大制限を指定しない場合は、Max パラメータを省略します。

    5. オプションで、他の属性を 1 つ以上指定して、返されるインスタンスタイプのリストをさらに制約できます。

  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 ファイルに必須属性が含まれています。それらは、ArchitectureTypesVirtualizationTypesVCpuCount、および MemoryMiB です。さらに、オプションで 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. ニーズに合ったインスタンスタイプを特定したら、フリートリクエストを設定するときにそれらを使用できるように、使用したインスタンスの属性をメモしておきます。