provider/aws: Only send iops when creating io1 devices. Fix docs (#12392)

This commit is contained in:
Clint 2017-03-07 06:44:39 -06:00 committed by Paul Stack
parent 322044695b
commit d2f728e6cd
3 changed files with 11 additions and 6 deletions

View File

@ -1034,11 +1034,16 @@ func readBlockDeviceMappingsFromConfig(
if v, ok := bd["volume_type"].(string); ok && v != "" { if v, ok := bd["volume_type"].(string); ok && v != "" {
ebs.VolumeType = aws.String(v) ebs.VolumeType = aws.String(v)
} if "io1" == strings.ToLower(v) {
// Condition: This parameter is required for requests to create io1
// volumes; it is not used in requests to create gp2, st1, sc1, or
// standard volumes.
// See: http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html
if v, ok := bd["iops"].(int); ok && v > 0 { if v, ok := bd["iops"].(int); ok && v > 0 {
ebs.Iops = aws.Int64(int64(v)) ebs.Iops = aws.Int64(int64(v))
} }
}
}
blockDevices = append(blockDevices, &ec2.BlockDeviceMapping{ blockDevices = append(blockDevices, &ec2.BlockDeviceMapping{
DeviceName: aws.String(bd["device_name"].(string)), DeviceName: aws.String(bd["device_name"].(string)),

View File

@ -1060,7 +1060,6 @@ resource "aws_instance" "foo" {
root_block_device { root_block_device {
volume_type = "gp2" volume_type = "gp2"
volume_size = 11 volume_size = 11
iops = 330
} }
} }
` `

View File

@ -102,7 +102,8 @@ The `root_block_device` mapping supports the following:
* `volume_size` - (Optional) The size of the volume in gigabytes. * `volume_size` - (Optional) The size of the volume in gigabytes.
* `iops` - (Optional) The amount of provisioned * `iops` - (Optional) The amount of provisioned
[IOPS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-io-characteristics.html). [IOPS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-io-characteristics.html).
This must be set with a `volume_type` of `"io1"`. This is only valid for `volume_type` of `"io1"`, and must be specified if
using that type
* `delete_on_termination` - (Optional) Whether the volume should be destroyed * `delete_on_termination` - (Optional) Whether the volume should be destroyed
on instance termination (Default: `true`). on instance termination (Default: `true`).