2016-12-19 15 views
2

При создании экземпляра в AWS размер корня тома по умолчанию равен 8 ГБ, я пытаюсь создать экземпляр с использованием boto3, но с другим размером по умолчанию, например 300 ГБ, я в настоящее время пробую что-то вроде этого без успеха:при использовании boto3 как создать экземпляр aws с настраиваемым размером корневого тома

block_device_mappings = [] 


block_device_mappings.append({                                                                                                               
    'DeviceName': '/dev/sda1',                                                        
    'Ebs': {                                                             
     'VolumeSize': 300,                                                     
     'DeleteOnTermination': True,                                                       
     'VolumeType': 'gp2'                                                         
} 

Любая идея о том, как этого достичь?

ответ

0

Скорее всего, что вы используете AMI, который использует /dev/xvda вместо /dev/sda1 для своего корневого тома.

МАСС эти дни поддерживают один из двух типов виртуализации, paravirtual (PV) или аппаратного виртуализированных (HVM) и фотоэлектрические изображения поддерживают /dev/sda1 для имени устройства корня, в то время как HVM изображения можно указать dev/xvda или /dev/sda1 (больше от AWS Documentation либо).

Вы можете добавить проверку изображения, чтобы определить, какой AMI вы используете, устанавливает свой корневой том и затем использует эту информацию для ваших звонков на create_images.

Вот фрагмент кода, который вызывает вызов describe_images, извлекает информацию о его RootDeviceName, а затем использует его для настройки отображения блочного устройства.

import boto3 

if __name__ == '__main__': 
    client = boto3.client('ec2') 

    # This grabs the Debian Jessie 8.6 image (us-east-1 region) 
    image_id = 'ami-49e5cb5e' 

    response = client.describe_images(ImageIds=[image_id]) 

    device_name = response['Images'][0]['RootDeviceName'] 
    print(device_name) 

    block_device_mappings = [] 

    block_device_mappings.append({ 
     'DeviceName': device_name, 
     'Ebs': { 
     'VolumeSize': 300, 
     'DeleteOnTermination': True, 
     'VolumeType': 'gp2' 
     } 
    }) 

    # Whatever you need to create the instances 

Для справки, вызов describe_images возвращает dict, который выглядит следующим образом:

{u'Images': [{u'Architecture': 'x86_64', 
    u'BlockDeviceMappings': [{u'DeviceName': '/dev/xvda', 
    u'Ebs': {u'DeleteOnTermination': True, 
     u'Encrypted': False, 
     u'SnapshotId': 'snap-0ddda62ff076afbc8', 
     u'VolumeSize': 8, 
     u'VolumeType': 'gp2'}}], 
    u'CreationDate': '2016-11-13T14:03:45.000Z', 
    u'Description': 'Debian jessie amd64', 
    u'EnaSupport': True, 
    u'Hypervisor': 'xen', 
    u'ImageId': 'ami-49e5cb5e', 
    u'ImageLocation': '379101102735/debian-jessie-amd64-hvm-2016-11-13-1356-ebs', 
    u'ImageType': 'machine', 
    u'Name': 'debian-jessie-amd64-hvm-2016-11-13-1356-ebs', 
    u'OwnerId': '379101102735', 
    u'Public': True, 
    u'RootDeviceName': '/dev/xvda', 
    u'RootDeviceType': 'ebs', 
    u'SriovNetSupport': 'simple', 
    u'State': 'available', 
    u'VirtualizationType': 'hvm'}], 
'ResponseMetadata': {'HTTPHeaders': {'content-type': 'text/xml;charset=UTF-8', 
    'date': 'Mon, 19 Dec 2016 14:03:36 GMT', 
    'server': 'AmazonEC2', 
    'transfer-encoding': 'chunked', 
    'vary': 'Accept-Encoding'}, 
    'HTTPStatusCode': 200, 
    'RequestId': '85a22932-7014-4202-92de-4b5ee6b7f73b', 
    'RetryAttempts': 0}} 

 Смежные вопросы

  • Нет связанных вопросов^_^