cloudtools / troposphere

troposphere - Python library to create AWS CloudFormation descriptions
BSD 2-Clause "Simplified" License
4.93k stars 1.45k forks source link

Stack formation fails when 'Throughput' is specified for the EBSBlockDevice class parameters, though the parameter is listed as valid #2148

Open austin-e-cox opened 1 year ago

austin-e-cox commented 1 year ago

When specifying an Ebs in the BlockDeviceMappings, if Throughput is specified, the stack fails formation, stating "Encountered unsupported property Throughput". Throughput is a stated valid parameter in the EBSBlockDevice class. We were trying to attach a gp3 volume to a GUI instance at creation and specify a given data throughput. Without this working properly we manually have to adjust the throughput for every user after creation or have to determine a convoluted workaround.

One thing to note is there appear to be 2 classes with very similar names but different accepted parameters: EBSBlockDevice and EbsBlockDevice. The parameter map states 'Ebs': EBSBlockDevice, but then seems to only accept the parameters of the EbsBlockDevice class instead of the EBSBlockDevice class

Example that fails stack formation instance.BlockDeviceMappings = [ { 'DeviceName': "...", 'Ebs': { 'DeleteOnTermination': True, 'Throughput': 500, 'Iops': 8000, 'VolumeSize': 30, 'VolumeType': 'gp3', 'Encrypted': True }

Documentation chain: class Instance props: {…,"BlockDeviceMappings": ([BlockDeviceMapping], False)}

class BlockDeviceMapping props: {…, "Ebs": (EBSBlockDevice, False)}

class EBSBlockDevice - props: {…, "Throughput": (integer, False)}