本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
EC2 機群的範例 CLI 組態
您可以在 JSON 檔案中定義 EC2 機群組態,然後使用 create-fleet
aws ec2 create-fleet --cli-input-json file://
file_name.json
下列範例說明各種 EC2 機群使用案例的啟動組態。如需組態參數的詳細資訊,請參閱 create-fleet
範例
如需類型 instant
機群的更多 CLI 範例,請參閱 設定 instant 類型的 EC2 機群。
範例 1:啟動 Spot 執行個體做為預設購買選項
下列範例指定 EC2 機群中所需的最小參數:啟動範本、目標容量和預設購買選項。啟動範本由其啟動範本 ID 和版本編號識別。機群的目標容量為 2 個執行個體,預設購買選項為 spot
,會讓機群啟動 2 個 Spot 執行個體。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "spot" } }
範例 2:啟動 隨需執行個體 做為預設購買選項
下列範例指定 EC2 機群中所需的最小參數:啟動範本、目標容量和預設購買選項。啟動範本由其啟動範本 ID 和版本編號識別。機群的目標容量為 2 個執行個體,預設購買選項為 on-demand
,會讓機群啟動 2 個 隨需執行個體。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "on-demand" } }
範例 3:啟動 隨需執行個體 做為主要容量
下列範例指定機群 2 個執行個體的總目標容量,以及 1 個隨需執行個體的目標容量。預設購買選項為 spot
。機群依照指定啟動 1 個隨需執行個體,但需要再啟動一個執行個體才能實現總目標容量。其差值的購買選項計算式為 TotalTargetCapacity
– OnDemandTargetCapacity
= DefaultTargetCapacityType
,這會讓機群啟動 1 個 Spot 執行個體。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "OnDemandTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } }
範例 4:使用多個容量保留來啟動隨需執行個體
您可以將容量保留的使用策略設為 use-capacity-reservations-first
,以將機群設定為在啟動隨需執行個體時首先使用隨需容量保留。本例示範當容量保留比所需目標容量更多時,機群如何選取要使用的容量保留。
本例使用的機群組態如下:
-
目標容量:12 個隨需執行個體
-
總計未使用的容量保留:15 (大於機群的目標容量:12 個隨需執行個體)
-
容量保留集區數目:3 (
m5.large
、m4.xlarge
和m4.2xlarge
) -
每個集區的容量保留數目:5
-
隨需分配策略:
lowest-price
(當多個執行個體集區中有多個未使用的容量保留時,機群會根據隨需分配策略決定要用來啟動隨需執行個體的集區。)請注意,您也可以使用
prioritized
分配策略,而不使用lowest-price
分配策略。
Capacity Reservations
帳戶在 3 個不同的集區中有以下 15 個未使用的容量保留。每個集區中的容量保留數目由 AvailableInstanceCount
表示。
{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 5, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 5, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount":5, "InstanceMatchCriteria": "open", "State": "active" }
機群組態
下列機群組態僅顯示此範例的相關組態。總目標容量為 12,預設目標容量類型為 on-demand
。隨需分配策略為 lowest-price
。容量保留的使用策略為 use-capacity-reservations-first
。
在此範例中, 隨需執行個體 價格如下:
-
m5.large
– 每小時 0.096 美元 -
m4.xlarge
– 每小時 0.20 美元 -
m4.2xlarge
– 每小時 0.40 美元
注意
機群類型必須為 instant
。其他機群類型不支援 use-capacity-reservations-first
。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-abc1234567example", "Version": "1" }, "Overrides": [ { "InstanceType": "m5.large", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 12, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }
使用上述組態建立 instant
叢集之後,會啟動以下 12 個執行個體以符合目標容量:
-
5 個
m5.large
隨需執行個體在us-east-1a
中 (us-east-1a
中的m5.large
價格最低),並且有 5 個可用的未使用m5.large
容量保留。 -
5 個
m4.xlarge
隨需執行個體在 us-east-1a 中 –us-east-1a
中的m4.xlarge
價格次低,並且有 5 個可用的未使用m4.xlarge
容量保留。 -
2 個
m4.2xlarge
隨需執行個體在 us-east-1a 中 –us-east-1a
中的m4.2xlarge
價格第三低,並且有 5 個可用的未使用m4.2xlarge
容量保留,只需要其中 2 個就可滿足目標容量
啟動機群後,您可以執行 describe-capacity-reservationsm5.large
和 m4.xlarge
容量保留都已使用,只剩 3 個 m4.2xlarge
容量保留未使用。
{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "AvailableInstanceCount": 3 }
範例 5:當總目標容量超過未使用的容量保留數目時,使用容量保留來啟動隨需執行個體
您可以將容量保留的使用策略設為 use-capacity-reservations-first
,以將機群設定為在啟動隨需執行個體時首先使用隨需容量保留。本例示範當總計目標容量超過可用的未使用容量保留數目時,機群會如何選取用來啟動隨需執行個體的執行個體集區。
本例使用的機群組態如下:
-
目標容量:16 個隨需執行個體
-
總計未使用的容量保留:15 (小於機群的目標容量:16 個隨需執行個體)
-
容量保留集區數目:3 (
m5.large
、m4.xlarge
和m4.2xlarge
) -
每個集區的容量保留數目:5
-
隨需分配策略:
lowest-price
(當未使用的容量保留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)請注意,您也可以使用
prioritized
分配策略,而不使用lowest-price
分配策略。
Capacity Reservations
帳戶在 3 個不同的集區中有以下 15 個未使用的容量保留。每個集區中的容量保留數目由 AvailableInstanceCount
表示。
{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 5, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 5, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount":5, "InstanceMatchCriteria": "open", "State": "active" }
機群組態
下列機群組態僅顯示此範例的相關組態。總目標容量為 16,預設目標容量類型為 on-demand
。隨需分配策略為 lowest-price
。容量保留的使用策略為 use-capacity-reservations-first
。
在此範例中, 隨需執行個體 價格如下:
-
m5.large – 每小時 0.096 USD
-
m4.xlarge – 每小時 0.20 USD
-
m4.2xlarge – 每小時 0.40 USD
注意
機群類型必須為 instant
。其他機群類型不支援 use-capacity-reservations-first
。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" }, "Overrides": [ { "InstanceType": "m5.large", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 16, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price" "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant", }
使用上述組態建立 instant
叢集之後,會啟動以下 16 個執行個體以符合目標容量:
-
6 個
m5.large
隨需執行個體在us-east-1a
中 –us-east-1a
中的m5.large
價格最低,並且有 5 個可用的未使用m5.large
容量保留。會先使用容量保留來啟動 5 個隨需執行個體。在使用了其餘的m4.xlarge
和m4.2xlarge
容量保留之後,為了滿足目標容量,會根據隨需分配策略啟動額外的隨需執行個體,在本例中為lowest-price
。 -
5 個
m4.xlarge
隨需執行個體在us-east-1a
中 –us-east-1a
中的m4.xlarge
價格次低,並且有 5 個可用的未使用m4.xlarge
容量保留。 -
5 個
m4.2xlarge
隨需執行個體在us-east-1a
中 –us-east-1a
中的m4.2xlarge
價格第三低,並且有 5 個可用的未使用m4.2xlarge
容量保留。
啟動機群後,您可以執行 describe-capacity-reservations
{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "AvailableInstanceCount": 0 }
範例 6:使用目標容量保留啟動隨需執行個體
您可以將容量保留的使用策略設為 use-capacity-reservations-first
,以將機群設定為在啟動 隨需執行個體 時首先使用 targeted
隨需容量保留。本例示範如何使用 targeted
容量保留來啟動隨需執行個體,其中容量保留的屬性皆相同,但其可用區域 (us-east-1a
和 us-east-1b
) 不同。本例亦示範當總計目標容量超過可用的未使用容量保留數目時,機群會如何選取用來啟動隨需執行個體的執行個體集區。
本例使用的機群組態如下:
-
目標容量:10 個隨需執行個體
-
總計未使用的
targeted
容量保留:6 (小於機群的隨需目標容量:10 個隨需執行個體) -
容量保留集區數目:2 (
us-east-1a
和us-east-1b
) -
每個集區的容量保留數目:3
-
隨需分配策略:
lowest-price
(當未使用的容量保留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)請注意,您也可以使用
prioritized
分配策略,而不使用lowest-price
分配策略。
如需完成此範例所須執行程序的逐步演練,請參閱 教學課程:使用目標容量保留設定 EC2 機群啟動隨需執行個體。
Capacity Reservations
帳戶在 2 個不同的集區中有以下 6 個未使用的容量保留。在本例中,集區的可用區域有所不同。每個集區中的容量保留數目由 AvailableInstanceCount
表示。
{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 3, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1b", "AvailableInstanceCount": 3, "InstanceMatchCriteria": "open", "State": "active" }
機群組態
下列機群組態僅顯示此範例的相關組態。總目標容量為 10,預設目標容量類型為 on-demand
。隨需分配策略為 lowest-price
。容量保留的使用策略為 use-capacity-reservations-first
。
在本例中,us-east-1
中的 c5.xlarge
隨需執行個體價格為每小時 0.17 美元。
注意
機群類型必須為 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 個隨需執行個體已在
c5.xlarge
中啟動至 3 個targeted
us-east-1b
容量保留
-
-
為了滿足目標容量,會根據隨需分配策略 (在本例中為
lowest-price
) 使用一般隨需容量來啟動 4 個額外的隨需執行個體。不過,由於集區的價格相同 (因為價格是按區域而非可用區域計價),因此機群會使用任一個集區來啟動剩餘的 4 個隨需執行個體。
啟動機群後,您可以執行 describe-capacity-reservations
{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }
範例 7:設定容量重新平衡,以啟動取代 Spot 執行個體
下列範例會設定 EC2 機群,以便 Amazon EC2 在機群中對 Spot 執行個體發出重新平衡建議時啟動替代 Spot 執行個體。若要為 ReplacementStrategy
設定 Spot 執行個體的自動替代,請指定 launch-before-terminate
。若要設定從啟動新替代 Spot 執行個體到自動刪除舊 Spot 執行個體的時間延遲,請針對 termination-delay
,指定一值 (以秒為單位)。如需詳細資訊,請參閱 組態選項。
注意
建議您僅在可以預測執行個體關閉程序需要多長時間才能完成時,才使用 launch-before-terminate
,以便只在這些程序完成後才會終止舊執行個體。所有執行個體在執行時,您需要支付所有執行個體的費用。
容量重新平衡策略的有效性取決於 EC2 機群請求中指定的 Spot 容量集區數目。我們建議您使用多樣化的執行個體類型和可用區域的集合來設定機群,若要 AllocationStrategy
,請指定 capacity-optimized
。如需設定 EC2 機群容量重新平衡時應考量哪些項目的詳細資訊,請參閱 在 EC2 機群和 Spot 機群中使用容量重新平衡,來取代具有風險的 Spot 執行個體。
{ "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "c3.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c4.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c5.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 5, "DefaultTargetCapacityType": "spot" }, "SpotOptions": { "AllocationStrategy": "capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch-before-terminate", "TerminationDelay": "720" } } } }
範例 8:在容量最佳化機群中啟動 Spot 執行個體
下列範例示範如何使用可最佳化容量的 Spot 分配策略來設定 EC2 機群。若要最佳化容量,您必須將 AllocationStrategy
設為 capacity-optimized
。
在下列範例中,三個啟動規格指定三個 Spot 容量集區。目標容量為 50 個 Spot 執行個體。EC2 機群嘗試將 50 個 Spot 執行個體啟動到 Spot 容量集區中,且擁有啟動中執行個體數目之最佳容量。
{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2a" }, }, { "InstanceType": "m4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, }, { "InstanceType": "c5.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 50, "DefaultTargetCapacityType": "spot" } }
範例 9:使用優先順序在容量最佳化機群中啟動 Spot 執行個體
下列範例示範在盡最大努力使用優先順序時,如何使用可最佳化容量的 Spot 分配策略來設定 EC2 機群。
當您使用 capacity-optimized-prioritized
分配策略時,您可以使用 Priority
參數來指定 Spot 容量集區的優先順序,其中數字越小,優先順序越高。如果您對它們一視同仁,也可以為數個 Spot 容量集區設定相同的優先順序。如果您沒有設定集區的優先順序,集區將被視為最後一個優先順序。
若要排定 Spot 容量集區的優先順序,您必須將 AllocationStrategy
設為 capacity-optimized-prioritized
。EC2 機群將首先針對容量進行最佳化,但會盡力實現優先順序 (例如,若實現優先順序不會顯著影響 EC2 機群佈建最佳容量的能力)。對於必須將中斷可能性降至最低的工作負載來說,這是一個很好的選擇,而且某些執行個體類型的偏好也很重要。
在下列範例中,三個啟動規格指定三個 Spot 容量集區。每個集區都有優先順序,其中數字越小,優先順序越高。目標容量為 50 個 Spot 執行個體。EC2 機群嘗試以最高優先順序在 Spot 容量集區中啟動 50 個 Spot 執行個體,但首先針對容量進行最佳化。
{ "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 執行個體
下列範例示範如何使用可最佳化容量且價格最低的 Spot 分配策略來設定 EC2 機群。若要在將價格納入考慮的同時最佳化容量,您必須將 Spot AllocationStrategy
設定為 price-capacity-optimized
。
在下列範例中,三個啟動規格指定三個 Spot 容量集區。目標容量為 50 個 Spot 執行個體。EC2 機群嘗試將 50 個 Spot 執行個體啟動到 Spot 容量集區中,且擁有啟動中執行個體數目之最佳容量,同時還會選擇價格最低的集區。
{ "SpotOptions": { "AllocationStrategy": "price-capacity-optimized", "MinTargetCapacity": 2, "SingleInstanceType": true }, "OnDemandOptions": { "AllocationStrategy": "lowest-price" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2a" }, }, { "InstanceType": "m4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, }, { "InstanceType": "c5.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 50, "OnDemandTargetCapacity":0, "SpotTargetCapacity":50, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }
範例 11:設定屬性型執行個體類型選取
下列範例示範如何將 EC2 機群設定為使用屬性型執行個體類型選取來識別執行個體類型。若要指定必要的執行個體屬性,您可以在 InstanceRequirements
結構中指定屬性。
在下列範例中,指定了兩個執行個體屬性:
-
VCpuCount
– 至少指定 2 個 vCPU。由於未指定最大值,因此沒有最大限制。 -
MemoryMiB
– 至少指定 4 MiB 的記憶體。由於未指定最大值,因此沒有最大限制。
將會識別任何具有 2 個或更多 vCPU 和 4 MiB 或更多記憶體的執行個體類型。但是,當 EC2 機群佈建機群時,價格保護和分配策略可能會排除某些執行個體類型。
如需您可指定之所有可能屬性的清單和說明,請參閱 Amazon EC2 API 參考中的InstanceRequirements。
{ "SpotOptions": { "AllocationStrategy": "
price-capacity-optimized
" }, "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template
", "Version": "" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min":
1
2
}, "MemoryMiB": { "Min":4
} } }] }], "TargetCapacitySpecification": { "TotalTargetCapacity":20
, "DefaultTargetCapacityType": "spot
" }, "Type": "instant
" }