我正在使用 boto3 EC2.Client.create_fleet() 创建一个 spot fleet 请求,但我无法复制我过去使用现已弃用的 EC2.client.request_spot_fleet() 获得的确切输出。
我的问题是:
Request type = instance
),而不是一个包含该数量实例的队列请求。Type="maintain"
但在控制台中我看到Persistence one-time
.ValidFrom
和ValidUntil
,但它们在控制台中是空白的。我反复阅读了boto3 create_fleet 文档。
我的代码如下:
LaunchTemplateData={
"IamInstanceProfile": {"Arn": ecsInstanceArn},
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"DeleteOnTermination": True,
"VolumeType": "gp2",
"VolumeSize": EBS_VOL_SIZE,
"SnapshotId": SnapshotId
}
},
{
"DeviceName": "/dev/xvdcz",
"Ebs": {
"DeleteOnTermination": True,
"VolumeType": "gp2"
}
}
],
"NetworkInterfaces": [
{
"DeviceIndex": 0,
"SubnetId": SubnetId,
"DeleteOnTermination": True,
"AssociatePublicIpAddress": True,
"Groups": [SecurityGroup]
}
],
"ImageId": ImageId,
"InstanceType": MACHINE_TYPE[0],
"KeyName": KeyName,
"UserData": userData
}
TemplateName=f'{APP_NAME}_LaunchTemplate'
try:
launch_template = ec2client.create_launch_template_version(LaunchTemplateName=TemplateName,LaunchTemplateData=LaunchTemplateData)['LaunchTemplateVersion']
except ec2client.exceptions.ClientError:
launch_template = ec2client.create_launch_template(LaunchTemplateName=TemplateName,LaunchTemplateData=LaunchTemplateData)['LaunchTemplate']
SpotOptions = {"AllocationStrategy": "lowestPrice"}
LaunchTemplateConfigs=[{'LaunchTemplateSpecification':{'LaunchTemplateId':launch_template['LaunchTemplateId'],
'Version':'$Latest'},
'Overrides':[{
'MaxPrice':'%.2f' %MACHINE_PRICE,
'SubnetId':SubnetId}]}]
TargetCapacitySpecification={'TotalTargetCapacity':CLUSTER_MACHINES,
'OnDemandTargetCapacity':0,
'DefaultTargetCapacityType':'spot'}