为 AWS::EC2::Instance 实现 BlockDeviceMappings

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/heat/+spec/implement-ec2instance-bdm

我们应该支持 AWS::EC2::Instance 资源的 BlockDeviceMappings,以与 AWSCloudFormation 兼容。

问题描述

目前在 Heat 中,AWS::EC2::Instance 资源只有 ‘Volumes’ 属性来指示要附加的卷,但在 AWSCloudFormation 中有两种定义卷的方式,‘Volumes’ 和 ‘BlockDeviceMappings’,请参阅

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html

  1. ‘Volumes’ 支持 ‘volume_id’,用户可以指定要附加到实例的卷。这种方式已经在 Heat 中实现,但对于批量创建来说不是一个好的方法,因为一个卷不能附加到多个实例。

  2. ‘BlockDeviceMappings’ 支持 ‘snapshot_id’,用户可以指定一个快照,然后将从快照创建一个卷,并将该卷附加到实例。这种方式更适合批量创建。

Nova 支持使用块设备映射创建服务器

https://docs.openstack.org/api/openstack-compute/2/content/ext-os-block-device-mapping-v2-boot.html

因此,我们应该支持 AWS::EC2::Instance 资源的 ‘BlockDeviceMappings’。

提议的变更

  1. 为 AWS::EC2::Instance 资源添加 ‘BlockDeviceMappings’ 属性,特别是用户可以指定 ‘snapshot_id’ 的情况。

备选方案

实现

负责人

主要负责人

<huangtianhua>

里程碑

完成目标里程碑

Juno-2

工作项

  1. 支持 AWS::EC2::Instance 资源的 BlockDeviceMappings

  2. 为该变更添加 UT/Tempest 测试

  3. 添加一个带有 BlockDeviceMappings 的 AWS::EC2::Instance 模板

依赖项