如何以编程方式指定AWS EC2实例的初始磁盘大小

时间:2019-06-24 21:38:15

标签: boto3 aws-cli

启动新实例时,我一直在使用逻辑来指定磁盘大小。但是,问题在于它需要知道DeviceName,具体取决于实例类型。通常是/dev/sda1,但是在p3dn.24xlarge实例上,默认磁盘却出现在/dev/xvda设备上,所以我的实例最终有2个卷:

 /dev/xvda          8        gp2          vol-06402d0bcb07d3b96 
 /dev/sda1        500        gp2          vol-0e2593027d73fbc52 

我可以将p3dn作为特殊情况进行硬连接,但是不确定是否将来有可能打破这种情况,是否有更好的建议?

代码

      assert disk_size > 0
      ebs = {
        'VolumeSize': disk_size,
        'VolumeType': 'gp2',
      }

      args['BlockDeviceMappings'] = [{
        'DeviceName': '/dev/sda1',
        'Ebs': ebs
      }]

      instances = ec2.create_instances(**args)

1 个答案:

答案 0 :(得分:0)

  image = list(ec2.images.filter(ImageIds=['my-image-id']))[0]
  args['BlockDeviceMappings'] = [{
    'DeviceName': image.root_device_name,
    'Ebs': ebs
  }]