2016-12-19 1 views
2

AWSでインスタンスを作成すると、デフォルトのボリュームサイズは8GBになりますが、boto3を使用してインスタンスを作成しようとしています300ギガバイトは、私は現在、成功せず、このような何かをしようとしています:boto3を使用する場合カスタムルートボリュームサイズを持つawsインスタンスを作成する方法

block_device_mappings = [] 


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

の任意のアイデアはどのようにこれを達成するために?

答えて

0

おそらく、ルートボリュームに/dev/sda1の代わりに/dev/xvdaを使用するAMIを使用している可能性があります。

のAMIこれらの日はHVM画像がAWS Documentationからdev/xvda又は/dev/sda1(以上いずれかを指定することができ、一方、2仮想化の種類、準仮想化(PV)またはハードウェア仮想化(HVM)、及びPVイメージの一つは、ルートデバイス名の/dev/sda1をサポートするサポート)。

イメージチェックを追加して、使用しているAMIのルートボリュームを設定してから、その情報をcreate_imagesに使用することができます。

describe_imagesにコールを発信し、そのRootDeviceNameに関する情報を取得し、それを使用してブロックデバイスマッピングを設定するコードスニペットです。

{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}} 
:参考

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返します

関連する問題