Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EBS gp3 volume scalable throughput #16514

Closed
ewbankkit opened this issue Dec 1, 2020 · 12 comments
Closed

EBS gp3 volume scalable throughput #16514

ewbankkit opened this issue Dec 1, 2020 · 12 comments
Labels
enhancement Requests to existing resources that expand the functionality or scope. service/ec2 Issues and PRs that pertain to the ec2 service.
Milestone

Comments

@ewbankkit
Copy link
Contributor

ewbankkit commented Dec 1, 2020

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

With the new gp3 EBS volumes throughput is scalable.

New or Affected Resource(s)

Resources
Data Sources

Potential Terraform Configuration

resource "aws_ebs_volume" "example" {
  type       = "gp3"
  throughput = 500
}

References

Announcement.
User Guide.

@ewbankkit ewbankkit added the enhancement Requests to existing resources that expand the functionality or scope. label Dec 1, 2020
@ghost ghost added the service/ec2 Issues and PRs that pertain to the ec2 service. label Dec 1, 2020
@ewbankkit
Copy link
Contributor Author

ewbankkit commented Dec 1, 2020

I propose splitting into a number of smaller PRs, once for each resource (and data source if applicable).

@lukedd
Copy link

lukedd commented Dec 2, 2020

Some of these resources only allow the iops option to be set for io1/io2 volume types, eg:
https://github.com/hashicorp/terraform-provider-aws/blob/v3.19.0/aws/resource_aws_instance.go#L1377
These would need to be extended to allow setting iops for gp3 instance types too. Is that going to be handled here or do we need to file a separate issue?

@k3ypad
Copy link
Contributor

k3ypad commented Dec 2, 2020

I know this was just released, but is there a seperate issue for all the services that use EBS volumes? e.g. RDS and Elasticseach to name a few

@ewbankkit
Copy link
Contributor Author

@k3ypad Other service APIs have not (yet?) been updated to support the gp3 volume type (e.g. RDS CreateDBInstance).

@ewbankkit
Copy link
Contributor Author

ewbankkit commented Dec 2, 2020

@lukedd Yes, those validations will be updated to allow iops to be specified for gp3 volumes.
For at least some of the resources we should be able to move those checks which run during terraform apply resource creation to terraform plan-time via a customdiff function.

@mattburgess
Copy link
Collaborator

aws_emr_cluster could use this same treatment, but like aws_launch_configuration doesn't appear to support the throughput parameter at the moment (https://github.com/aws/aws-sdk-go/blob/v1.36.2/service/emr/api.go#L15262-L15278).

@dimisjim
Copy link
Contributor

dimisjim commented Dec 8, 2020

@mattburgess EMR APIs do not support gp3 yet. See aws/aws-sdk#29

bflad pushed a commit that referenced this issue Dec 17, 2020
…ta source (#16620)

Reference: #16514

Output from acceptance testing (test failure unrelated and noted in #16769):

```
--- FAIL: TestAccAWSInstance_instanceProfileChange (317.03s)
--- PASS: TestAccAWSInstance_addSecondaryInterface (165.55s)
--- PASS: TestAccAWSInstance_addSecurityGroupNetworkInterface (159.08s)
--- PASS: TestAccAWSInstance_associatePublic_defaultPrivate (96.96s)
--- PASS: TestAccAWSInstance_associatePublic_defaultPublic (88.29s)
--- PASS: TestAccAWSInstance_associatePublic_explicitPrivate (98.92s)
--- PASS: TestAccAWSInstance_associatePublic_explicitPublic (78.79s)
--- PASS: TestAccAWSInstance_associatePublic_overridePrivate (87.75s)
--- PASS: TestAccAWSInstance_associatePublic_overridePublic (78.38s)
--- PASS: TestAccAWSInstance_associatePublicIPAndPrivateIP (259.61s)
--- PASS: TestAccAWSInstance_atLeastOneOtherEbsVolume (147.90s)
--- PASS: TestAccAWSInstance_basic (76.37s)
--- PASS: TestAccAWSInstance_blockDevices (84.41s)
--- PASS: TestAccAWSInstance_changeInstanceType (374.14s)
--- PASS: TestAccAWSInstance_CreditSpecification_Empty_NonBurstable (332.05s)
--- PASS: TestAccAWSInstance_creditSpecification_isNotAppliedToNonBurstable (122.53s)
--- PASS: TestAccAWSInstance_creditSpecification_standardCpuCredits (125.02s)
--- PASS: TestAccAWSInstance_creditSpecification_standardCpuCredits_t2Tot3Taint (294.22s)
--- PASS: TestAccAWSInstance_creditSpecification_unknownCpuCredits_t2 (108.40s)
--- PASS: TestAccAWSInstance_creditSpecification_unknownCpuCredits_t3 (310.98s)
--- PASS: TestAccAWSInstance_creditSpecification_unlimitedCpuCredits (135.78s)
--- PASS: TestAccAWSInstance_creditSpecification_unlimitedCpuCredits_t2Tot3Taint (288.61s)
--- PASS: TestAccAWSInstance_creditSpecification_unspecifiedDefaultsToStandard (94.79s)
--- PASS: TestAccAWSInstance_CreditSpecification_UnspecifiedToEmpty_NonBurstable (124.98s)
--- PASS: TestAccAWSInstance_creditSpecification_updateCpuCredits (336.93s)
--- PASS: TestAccAWSInstance_creditSpecificationT3_standardCpuCredits (216.49s)
--- PASS: TestAccAWSInstance_creditSpecificationT3_unlimitedCpuCredits (224.03s)
--- PASS: TestAccAWSInstance_creditSpecificationT3_unspecifiedDefaultsToUnlimited (107.79s)
--- PASS: TestAccAWSInstance_creditSpecificationT3_updateCpuCredits (317.85s)
--- PASS: TestAccAWSInstance_dedicatedInstance (126.43s)
--- PASS: TestAccAWSInstance_disableApiTermination (154.23s)
--- PASS: TestAccAWSInstance_disappears (151.57s)
--- PASS: TestAccAWSInstance_EbsBlockDevice_InvalidIopsForVolumeType (11.08s)
--- PASS: TestAccAWSInstance_EbsBlockDevice_InvalidThroughputForVolumeType (11.48s)
--- PASS: TestAccAWSInstance_EbsBlockDevice_KmsKeyArn (72.43s)
--- PASS: TestAccAWSInstance_EbsRootDevice_basic (191.38s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyAll (153.72s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyDeleteOnTermination (173.98s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyIOPS_Io1 (230.44s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyIOPS_Io2 (246.25s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifySize (225.70s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyThroughput_Gp3 (221.01s)
--- PASS: TestAccAWSInstance_EbsRootDevice_ModifyType (230.40s)
--- PASS: TestAccAWSInstance_EbsRootDevice_MultipleBlockDevices_ModifyDeleteOnTermination (118.15s)
--- PASS: TestAccAWSInstance_EbsRootDevice_MultipleBlockDevices_ModifySize (138.47s)
--- PASS: TestAccAWSInstance_EbsRootDevice_MultipleDynamicEBSBlockDevices (209.99s)
--- PASS: TestAccAWSInstance_Empty_PrivateIP (247.91s)
--- PASS: TestAccAWSInstance_enclaveOptions (524.76s)
--- PASS: TestAccAWSInstance_forceNewAndTagsDrift (301.26s)
--- PASS: TestAccAWSInstance_getPasswordData_falseToTrue (195.55s)
--- PASS: TestAccAWSInstance_getPasswordData_trueToFalse (284.94s)
--- PASS: TestAccAWSInstance_GP2IopsDevice (86.28s)
--- PASS: TestAccAWSInstance_GP2WithIopsValue (9.66s)
--- PASS: TestAccAWSInstance_hibernation (284.60s)
--- PASS: TestAccAWSInstance_inDefaultVpcBySgId (96.80s)
--- PASS: TestAccAWSInstance_inDefaultVpcBySgName (186.86s)
--- PASS: TestAccAWSInstance_ipv6_supportAddressCount (101.07s)
--- PASS: TestAccAWSInstance_ipv6_supportAddressCountWithIpv4 (143.20s)
--- PASS: TestAccAWSInstance_ipv6AddressCountAndSingleAddressCausesError (13.53s)
--- PASS: TestAccAWSInstance_keyPairCheck (249.89s)
--- PASS: TestAccAWSInstance_metadataOptions (245.64s)
--- PASS: TestAccAWSInstance_NetworkInstanceRemovingAllSecurityGroups (285.45s)
--- PASS: TestAccAWSInstance_NetworkInstanceSecurityGroups (147.15s)
--- PASS: TestAccAWSInstance_NetworkInstanceVPCSecurityGroupIDs (202.59s)
--- PASS: TestAccAWSInstance_NewNetworkInterface_EmptyPrivateIPAndSecondaryPrivateIPs (344.11s)
--- PASS: TestAccAWSInstance_NewNetworkInterface_EmptyPrivateIPAndSecondaryPrivateIPsUpdate (163.40s)
--- PASS: TestAccAWSInstance_NewNetworkInterface_PrivateIPAndSecondaryPrivateIPs (355.32s)
--- PASS: TestAccAWSInstance_NewNetworkInterface_PrivateIPAndSecondaryPrivateIPsUpdate (144.22s)
--- PASS: TestAccAWSInstance_NewNetworkInterface_PublicIPAndSecondaryPrivateIPs (415.89s)
--- PASS: TestAccAWSInstance_noAMIEphemeralDevices (91.80s)
--- PASS: TestAccAWSInstance_placementGroup (117.55s)
--- PASS: TestAccAWSInstance_primaryNetworkInterface (132.58s)
--- PASS: TestAccAWSInstance_primaryNetworkInterfaceSourceDestCheck (244.37s)
--- PASS: TestAccAWSInstance_privateIP (259.77s)
--- PASS: TestAccAWSInstance_RootBlockDevice_KmsKeyArn (99.86s)
--- PASS: TestAccAWSInstance_rootBlockDeviceMismatch (234.60s)
--- PASS: TestAccAWSInstance_rootInstanceStore (118.53s)
--- PASS: TestAccAWSInstance_sourceDestCheck (258.89s)
--- PASS: TestAccAWSInstance_tags (318.09s)
--- PASS: TestAccAWSInstance_UserData_EmptyStringToUnspecified (237.74s)
--- PASS: TestAccAWSInstance_UserData_UnspecifiedToEmptyString (236.79s)
--- PASS: TestAccAWSInstance_userDataBase64 (88.37s)
--- PASS: TestAccAWSInstance_volumeTags (349.07s)
--- PASS: TestAccAWSInstance_volumeTagsComputed (291.98s)
--- PASS: TestAccAWSInstance_withIamInstanceProfile (276.41s)
--- SKIP: TestAccAWSInstance_inEc2Classic (1.59s)
--- SKIP: TestAccAWSInstance_outpost (1.89s)

--- PASS: TestAccAWSInstanceDataSource_AzUserData (149.91s)
--- PASS: TestAccAWSInstanceDataSource_basic (154.74s)
--- PASS: TestAccAWSInstanceDataSource_blockDevices (111.39s)
--- PASS: TestAccAWSInstanceDataSource_creditSpecification (188.40s)
--- PASS: TestAccAWSInstanceDataSource_EbsBlockDevice_KmsKeyId (153.00s)
--- PASS: TestAccAWSInstanceDataSource_enclaveOptions (332.35s)
--- PASS: TestAccAWSInstanceDataSource_getPasswordData_falseToTrue (207.01s)
--- PASS: TestAccAWSInstanceDataSource_getPasswordData_trueToFalse (240.13s)
--- PASS: TestAccAWSInstanceDataSource_GetUserData (204.58s)
--- PASS: TestAccAWSInstanceDataSource_GetUserData_NoUserData (194.61s)
--- PASS: TestAccAWSInstanceDataSource_gp2IopsDevice (393.36s)
--- PASS: TestAccAWSInstanceDataSource_gp3ThroughputDevice (134.01s)
--- PASS: TestAccAWSInstanceDataSource_keyPair (143.35s)
--- PASS: TestAccAWSInstanceDataSource_metadataOptions (311.32s)
--- PASS: TestAccAWSInstanceDataSource_PlacementGroup (358.55s)
--- PASS: TestAccAWSInstanceDataSource_privateIP (150.46s)
--- PASS: TestAccAWSInstanceDataSource_RootBlockDevice_KmsKeyId (163.76s)
--- PASS: TestAccAWSInstanceDataSource_rootInstanceStore (374.57s)
--- PASS: TestAccAWSInstanceDataSource_secondaryPrivateIPs (146.10s)
--- PASS: TestAccAWSInstanceDataSource_SecurityGroups (162.74s)
--- PASS: TestAccAWSInstanceDataSource_tags (161.67s)
--- PASS: TestAccAWSInstanceDataSource_VPC (170.24s)
--- PASS: TestAccAWSInstanceDataSource_VPCSecurityGroups (158.43s)

--- PASS: TestAccAWSInstancesDataSource_basic (320.63s)
--- PASS: TestAccAWSInstancesDataSource_instanceStateNames (321.13s)
--- PASS: TestAccAWSInstancesDataSource_tags (319.82s)
```
@bflad bflad added this to the v3.25.0 milestone Jan 19, 2021
@bflad
Copy link
Contributor

bflad commented Jan 19, 2021

Support for gp3 volume type and throughput configuration has been added across various resources and data sources in the Terraform AWS Provider, with aws_ami* and aws_ebs_volume being released in version 3.25.0 later this week. If there are specific places remaining where the API supports the configuration, but the provider does not, please create new feature requests for specific tracking. 👍

@ghost
Copy link

ghost commented Jan 22, 2021

This has been released in version 3.25.0 of the Terraform AWS provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading.

For further feature requests or bug reports with this functionality, please create a new GitHub issue following the template for triage. Thanks!

@vdmkenny
Copy link

vdmkenny commented Feb 8, 2021

This doesn't seem be working yet for launch configurations.
Using terraform 0.14.6 and aws provider 3.27.

Error: Error creating launch configuration: ValidationError: gp3 is invalid. Valid volume types are standard, io1, gp2, st1 and sc1.

@dimisjim
Copy link
Contributor

dimisjim commented Feb 8, 2021

@vdmkenny

from a few comments above: #16514 (comment)

If there are specific places remaining where the API supports the configuration, but the provider does not, please create new feature requests for specific tracking. +1

@ghost
Copy link

ghost commented Feb 18, 2021

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!

@ghost ghost locked as resolved and limited conversation to collaborators Feb 18, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement Requests to existing resources that expand the functionality or scope. service/ec2 Issues and PRs that pertain to the ec2 service.
Projects
None yet
Development

No branches or pull requests

7 participants