Terraform Core Version
1.2.3
AWS Provider Version
4.46.0
Affected Resource(s)
Expected Behavior
If specifying iops is mandatory when choosing gp3:
- You should not be able to apply the change without specifying it, a validator is missing
If IOPS is NOT mandatory when choosing gp3:
- You should not be blocked during further apply, and your plan should not describe a change about
iops
Actual Behavior
The first apply was successful, allowing me to switch an existing RDS instance from GP2 to GP3. But now my pipeline is blocked with the following plan/error
~ resource "aws_db_instance" "this" {
id = "a_db"
~ iops = 3000 -> 0
name = "a_db"
....
│ Error: updating RDS DB Instance (a_db): operation error RDS: ModifyDBInstance, https response error StatusCode: 400, RequestID: 61792e08-c93b-4834-a35c-eb029b29ba30, api error InvalidParameterCombination: You can't specify IOPS or storage throughput for engine postgres and a storage size less than 400.
I can work around the error by adding to my resource the optional iops parameter with a value of 3000, unblocking my pipeline by avoiding the change:
resource "aws_db_instance" "this" {
id = "a_db"
iops = 3000
name = "a_db"
...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Relevant Error/Panic Output Snippet
No response
Terraform Configuration Files
resource "aws_db_instance" "default" {
...
allocated_storage = 20
storage_type = "gp2"
}
After first apply (you have an RDS instance on gp2), change storage_type, and apply two times: after the 1st apply you are on gp3, but now the 2nd (and following) applies will fail:
resource "aws_db_instance" "default" {
...
allocated_storage = 20
storage_type = "gp3"
}
Steps to Reproduce
- Create an RDS instance (postgres might be important), with a gp2 volume of 20 GB
- After first apply, switch it to gp3 without specifying the IOPS parameter
- Try to apply again, you should now see an unexpected change:
- 0 → 3000 IOPS
- Your apply will fail with the following error:
api error InvalidParameterCombination: You can't specify IOPS or storage throughput for engine postgres and a storage size less than 400
Debug Output
No response
Panic Output
No response
Important Factoids
No response
References
No response
Would you like to implement a fix?
None
Terraform Core Version
1.2.3
AWS Provider Version
4.46.0
Affected Resource(s)
Expected Behavior
If specifying
iopsis mandatory when choosinggp3:If IOPS is NOT mandatory when choosing
gp3:iopsActual Behavior
The first apply was successful, allowing me to switch an existing RDS instance from GP2 to GP3. But now my pipeline is blocked with the following plan/error
I can work around the error by adding to my resource the optional
iopsparameter with a value of3000, unblocking my pipeline by avoiding the change:Relevant Error/Panic Output Snippet
No response
Terraform Configuration Files
After first apply (you have an RDS instance on gp2), change storage_type, and apply two times: after the 1st apply you are on gp3, but now the 2nd (and following) applies will fail:
Steps to Reproduce
api error InvalidParameterCombination: You can't specify IOPS or storage throughput for engine postgres and a storage size less than 400Debug Output
No response
Panic Output
No response
Important Factoids
No response
References
No response
Would you like to implement a fix?
None