本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配使用 RequestSpotFleet 與 CLI
下列程式碼範例示範如何使用 RequestSpotFleet。
- CLI
-
- AWS CLI
-
以最低價格請求子網路中的 Spot 機群
此範例命令會建立具有兩個啟動規格的 Spot 機群請求,這些啟動規格的不同僅在於子網路。Spot 機群會使用最低價格在指定的子網路中啟動執行個體。如果執行個體是在預設的 VPC 中啟動,則其預設會接收公有 IP 位址。如果執行個體是在非預設的 VPC 中啟動,則其預設不會接收公有 IP 位址。
請注意,您不能在 Spot 機群請求中指定來自同一個可用區域的不同子網路。
命令:
aws ec2 request-spot-fleet --spot-fleet-request-configfile://config.jsonconfig.json:
{ "SpotPrice": "0.04", "TargetCapacity": 2, "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "m3.medium", "SubnetId": "subnet-1a2b3c4d, subnet-3c4d5e6f", "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" } } ] }輸出:
{ "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }以最低價格請求可用區域中的 Spot 機群
此範例命令會建立具有兩個啟動規格的 Spot 機群請求,這些啟動規格的不同僅在於可用區域。Spot 機群會在使用最低價格的指定可用區域中啟動執行個體。如果您的帳戶僅支援 EC2-VPC,Amazon EC2 會在可用區域的預設子網路中啟動 Spot 執行個體。如果您的帳戶支援 EC2-Classic,Amazon EC2 會在可用區域中啟動 EC2-Classic 中的執行個體。
命令:
aws ec2 request-spot-fleet --spot-fleet-request-configfile://config.jsonconfig.json:
{ "SpotPrice": "0.04", "TargetCapacity": 2, "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "m3.medium", "Placement": { "AvailabilityZone": "us-west-2a, us-west-2b" }, "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" } } ] }在子網路中啟動 Spot 執行個體,並為其指派公有 IP 位址
此範例命令會將公有位址指派給在非預設 VPC 中啟動的執行個體。請注意,您在指定網路介面時,必須加入使用網路介面的子網路 ID 和安全群組 ID。
命令:
aws ec2 request-spot-fleet --spot-fleet-request-configfile://config.jsonconfig.json:
{ "SpotPrice": "0.04", "TargetCapacity": 2, "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "InstanceType": "m3.medium", "NetworkInterfaces": [ { "DeviceIndex": 0, "SubnetId": "subnet-1a2b3c4d", "Groups": [ "sg-1a2b3c4d" ], "AssociatePublicIpAddress": true } ], "IamInstanceProfile": { "Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role" } } ] }使用多樣化配置策略請求 Spot 機群
此範例命令會建立 Spot 機群請求,藉由使用多樣化配置策略來啟動 30 個執行個體。啟動規格因執行個體類型而異。Spot 機群會將執行個體分配給啟動規格,如此每種規格就有 10 個執行個體。
命令:
aws ec2 request-spot-fleet --spot-fleet-request-configfile://config.jsonconfig.json:
{ "SpotPrice": "0.70", "TargetCapacity": 30, "AllocationStrategy": "diversified", "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c4.2xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "m3.2xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-1a2b3c4d" } ] }如需詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的 Spot 機群請求。
-
如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 RequestSpotFleet
。
-
- PowerShell
-
- Tools for PowerShell V4
-
範例 1:此範例會在可用區域中,以指定執行個體類型的最低價格,建立 Spot 機群請求。如果您的帳戶僅支援 EC2-VPC,Spot 機群會在具有預設子網路的最低價格可用區域中,啟動執行個體。如果您的帳戶支援 EC2-Classic,Spot 機群會在價格最低的可用區域中,啟動 EC2-Classic 中的執行個體。請注意,您支付的價格不會超過請求的指定 Spot 價格。
$sg = New-Object Amazon.EC2.Model.GroupIdentifier $sg.GroupId = "sg-12345678" $lc = New-Object Amazon.EC2.Model.SpotFleetLaunchSpecification $lc.ImageId = "ami-12345678" $lc.InstanceType = "m3.medium" $lc.SecurityGroups.Add($sg) Request-EC2SpotFleet -SpotFleetRequestConfig_SpotPrice 0.04 ` -SpotFleetRequestConfig_TargetCapacity 2 ` -SpotFleetRequestConfig_IamFleetRole arn:aws:iam::123456789012:role/my-spot-fleet-role ` -SpotFleetRequestConfig_LaunchSpecification $lc-
如需 API 詳細資訊,請參閱《AWS Tools for PowerShell Cmdlet 參考 (V4)》中的 RequestSpotFleet。
-
- Tools for PowerShell V5
-
範例 1:此範例會在可用區域中,以指定執行個體類型的最低價格,建立 Spot 機群請求。如果您的帳戶僅支援 EC2-VPC,Spot 機群會在具有預設子網路的最低價格可用區域中,啟動執行個體。如果您的帳戶支援 EC2-Classic,Spot 機群會在價格最低的可用區域中,啟動 EC2-Classic 中的執行個體。請注意,您支付的價格不會超過請求的指定 Spot 價格。
$sg = New-Object Amazon.EC2.Model.GroupIdentifier $sg.GroupId = "sg-12345678" $lc = New-Object Amazon.EC2.Model.SpotFleetLaunchSpecification $lc.ImageId = "ami-12345678" $lc.InstanceType = "m3.medium" $lc.SecurityGroups.Add($sg) Request-EC2SpotFleet -SpotFleetRequestConfig_SpotPrice 0.04 ` -SpotFleetRequestConfig_TargetCapacity 2 ` -SpotFleetRequestConfig_IamFleetRole arn:aws:iam::123456789012:role/my-spot-fleet-role ` -SpotFleetRequestConfig_LaunchSpecification $lc-
如需 API 詳細資訊,請參閱《AWS Tools for PowerShell Cmdlet 參考 (V5)》中的 RequestSpotFleet。
-
如需 AWS SDK 開發人員指南和程式碼範例的完整清單,請參閱 使用 SDK 建立 Amazon EC2 資源 AWS。此主題也包含有關入門的資訊和舊版 SDK 的詳細資訊。