与 AWS SDK或RequestSpotFleet一起使用 CLI - Amazon Elastic Compute Cloud

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

与 AWS SDK或RequestSpotFleet一起使用 CLI

以下代码示例演示如何使用 RequestSpotFleet

CLI
AWS CLI

请求子网中价格最低的 Spot 队列

此示例命令创建一个 Spot 队列请求,其中包含两个仅因子网而异的启动规格。竞价型队列以最低价格启动指定子网中的实例。如果实例以默认方式启动VPC,则默认情况下它们会收到一个公有 IP 地址。如果实例以非默认方式启动VPC,则默认情况下它们不会收到公有 IP 地址。

请注意,您不能在竞价型队列请求中指定来自同一可用区的不同子网。

命令:

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

config.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 队列请求,这两个启动规格仅因可用区而异。竞价型队列以最低价格在指定可用区启动实例。如果您的账户VPC仅支持EC2,Amazon EC2 将在可用区的默认子网中启动竞价型实例。如果您的账户支持 EC2-Classic,则亚马逊EC2将在可用区域的 EC2-Classic中启动实例。

命令:

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

config.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" } } ] }

在子网中启动竞价型实例并为其分配公有 IP 地址

此示例命令为以非VPC默认方式启动的实例分配公有地址。请注意,在指定网络接口时,必须使用该网络接口包括子网 ID 和安全组 ID。

命令:

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

config.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 个实例。启动规格因实例类型而异。竞价型队列按启动规格分配实例,因此每种类型有 10 个实例。

命令:

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

config.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 弹性计算云用户指南中的竞价型队列请求。

PowerShell
用于 PowerShell

示例 1:此示例在可用区中为指定实例类型创建价格最低的竞价型队列请求。如果您的账户VPC仅支持EC2,则竞价型队列会在具有默认子网的价格最低的可用区启动实例。如果您的账户支持 EC2-Classic,则竞价型队列会在价格最低的可用区中启动 EC2-Classic 中的实例。请注意,您支付的价格不会超过请求的指定竞价价格。

$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 参考RequestSpotFleet中的。

有关 AWS SDK开发者指南和代码示例的完整列表,请参阅使用创建 Amazon EC2 资源 AWS SDK。本主题还包括有关入门的信息以及有关先前SDK版本的详细信息。