如何使用具有所需实例属性而不是实例类型的 boto3 创建 spot 实例

How to create spot instance with boto3 with required instance attributes instead of instance type

我可以使用以下代码创建 spot 实例

import boto3
import datetime, random, string, json
client = boto3.client('ec2')
response = client.request_spot_instances(
    DryRun=False,
    ClientToken=''.join(random.choices(string.ascii_uppercase + string.digits, k=10)),
    InstanceCount=1,
    Type='one-time',
    LaunchSpecification={
        'ImageId': 'ami-053ebee0bc662f9b3',
        'SecurityGroups': ['default'],
        'InstanceType': 't3.medium',
        'Placement': {
            'AvailabilityZone': 'us-east-1a',
        },
        'BlockDeviceMappings': [
            {
            },
        ],
        'EbsOptimized': True,
        'Monitoring': {
            'Enabled': True
        },
        'SecurityGroupIds': [
            'sg-03432e1f',
        ]
    }
)

print(json.dumps(response))

我可以接受至少有 2 个 vCPU 而不仅仅是 t3.medium 的任何实例,我该如何更改要求?

您必须使用 create_fleet 而不是 request_spot_instances。只有 create_fleet 允许您指定 VCpuCountMemoryMiB.