如何使用boto3指定core-os ec2实例的根卷大小?

时间:2015-08-26 00:00:12

标签: amazon-web-services coreos aws-ec2 boto3

我无法从documentation和源代码中找出如何定义根设备的大小。

您可以使用BlockDeviceMappings部分指定N个附加块设备,您可以在其中声明其大小。但是没有办法设置根卷的大小。因此,它始终创建一个根卷大小为8GB的实例,这是默认值。

3 个答案:

答案 0 :(得分:12)

今天我自己也谈到了这个问题,原来的海报可能要迟到了,但是如果其他人偶然发现这个问题我会做以下事情:

import boto3
ec2 = boto3.resource('ec2',
                     region_name='eu-west-1',
                     aws_access_key_id='my-key',
                     aws_secret_access_key='my-secret')
instance = ec2.create_instances(ImageId='my-image-id',
                                BlockDeviceMappings=[{"DeviceName": "/dev/xvda","Ebs" : { "VolumeSize" : 50 }}])

以上内容已被截断(您需要为其他值传递更多参数给create_instances,InstanceType等),但实际上是作为BlockDeviceMappings的一部分传递根设备(在本例中为/ dev / xvda)具有所需卷大小的值(在上例中为50GB)。

答案 1 :(得分:3)

与Steve Jeffereies提到的相同,命名DeviceName是关键。我能够使用您通常在AWS控制台上看到的/ dev / sda1。以下是使用磁性的工作示例

BlockDeviceMappings=[
    {
        'DeviceName': '/dev/sda1',
        'Ebs': {
            'VolumeSize': 30,
            'VolumeType': 'standard'
        }
    }
]

答案 2 :(得分:0)

以下是必须设置的最小字段,必须设置根设备的大小:

import boto3
ec2_resource = boto3.resource('ec2')
    reservations = ec2_resource.create_instances(

        ImageId= "ami-xyz",
        MinCount=1,
        MaxCount=1,
        InstanceType='xyz',
        KeyName='key-pair',
        TagSpecifications=[
            {
                'ResourceType': 'instance',
                'Tags': [{
                     'Key': 'Name',
                    'Value': 'xyz-machine'
                }]
            }
        ],
        IamInstanceProfile={
        'Name':'xyz-role'
        },
        BlockDeviceMappings=[
            {
                'DeviceName': '/dev/sda1',
                'Ebs': {
                    'VolumeSize': 30,
                    'VolumeType': 'standard'
                }
            }
        ]
    )