Как подключить VPC и подсеть в request_spot_instances? - PullRequest
0 голосов
/ 26 июня 2018

У нас есть несколько подсетей и VPC. Как определить конкретную подсеть и VPC во время request_spot_instances?

следующий мой код:

client = boto3.client('ec2')

response = client.request_spot_instances(
    DryRun=False,
    ClientToken=''.join(random.choices(string.ascii_lowercase + string.digits, k=10)),
    InstanceCount=1,
    Type='one-time',
    LaunchSpecification={
        'ImageId': 'ami-db710fa3',
        'KeyName': 'my_key',
        'InstanceType': 'm4.4xlarge',
        'Placement': {
            'AvailabilityZone': 'us-east-2a',
        },
        'BlockDeviceMappings': [
            {
                'Ebs': {
                    # 'SnapshotId': 'snap-f70deff0',
                    'VolumeSize': 100,
                    'DeleteOnTermination': True,
                    'VolumeType': 'gp2',
                    'Iops': 300,
                    'Encrypted': False
                },
            },
        ],

        'EbsOptimized': True,
        'Monitoring': {
            'Enabled': True
        },
        'SecurityGroupIds': ['sg-1231231' ],
        'NetworkInterfaces': [
            {
                'DeviceIndex': 123,
                'SubnetId': 'Subnet-df123123'
            },
        ],

    }
)

Однако приведенный выше код вызывает ошибки,

botocore.exceptions.ClientError: Произошла ошибка (InvalidParameterCombination) при вызове RequestSpotInstances операция: сетевые интерфейсы и группы безопасности на уровне экземпляра не может быть указан в том же запросе

любая помощь приветствуется Спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Ошибка говорит само за себя: Сетевые интерфейсы и группы безопасности уровня экземпляра не могут быть указаны в одном запросе

Это потому, что NetworkInterfaces имеет подпараметр с именем Groups, в котором вы указываете группу безопасности. Это необходимо, поскольку можно указать несколько сетевых интерфейсов с разными группами безопасности для каждого.

Если NetworkInterfaces является , а не , вы можете использовать SecurityGroupIds (на том же уровне, что и NetworkInterfaces), и группы будут применены к сетевому интерфейсу по умолчанию, созданному с экземпляром.

Итак, если вам на самом деле не нужен 'DeviceIndex': 123, просто удалите весь бит NetworkInterfaces, и все будет в порядке.

...