13

我无法从文档和源代码中弄清楚如何定义根设备的大小。

您可以使用 BlockDeviceMappings 部分指定 N 个额外的块设备,您可以在其中声明它们的大小。但是没有办法设置根卷的大小。所以它总是创建一个根卷大小为 8GB 的​​实例,这是默认值。

4

4 回答 4

17

今天我自己遇到了这个问题,可能为原始海报迟到了,但万一其他人后来偶然发现这个问题,我做了以下事情:

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 等),但本质上将根设备(在本例中为 /dev/xvda)作为 BlockDeviceMappings 值的一部分与所需的体积一起传递大小(上例中为 50GB)。

于 2016-02-15T13:53:41.863 回答
8

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

BlockDeviceMappings=[
    {
        'DeviceName': '/dev/sda1',
        'Ebs': {
            'VolumeSize': 30,
            'VolumeType': 'standard'
        }
    }
]
于 2016-06-17T18:22:48.837 回答
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'
                }
            }
        ]
    )
于 2019-09-21T01:51:13.480 回答
-1

请参阅Stackoverflow:如何使用 Boto 启动 EC2 实例,指定 EBS 的大小?

此外,还有一种从AWS 命令​​行界面 (CLI)执行此操作的方法:

aws ec2 run-instances --image-id ami-xxxxxxxx --instance-type m1.xlarge --block-device-mappings '{"DeviceName": "/dev/sda1","Ebs" : { "VolumeSize" : 50 }}'
于 2015-08-26T03:48:52.710 回答