cfn-lint version: (cfn-lint --version) 0.29.0
Description of issue.
E3030 told me that "Postgres" was not an allowed engine name, so I changed it to "postgres". This caused cloudformation to rebuild my database instance, aka complete data loss. Luckily only discovered this on staging environment.
I think since CloudFormation / RDS seems to allow it, this check should be made case insensitive :)
I think this is also a CloudFormation bug, in that it compares the strings in a case-sensitive manner, when RDS underneath compares them in a case-insensitive manner. If you could file a bug there too that would be great.
Doing some more testing now. For some reason we called out mysql with multiple spellings.
"AllowedValues": [
"aurora",
"aurora-mysql",
"aurora-postgresql",
"mariadb",
"mysql",
"MySQL",
"oracle-ee",
"oracle-se2",
"oracle-se1",
"oracle-se",
"postgres",
"sqlserver-ee",
"sqlserver-se",
"sqlserver-ex",
"sqlserver-web"
]
I tested a few other resources (e.g. Lambda) and they all aren't case insensitive. So this seems particular to RDS. So I think we should leave the check as is, remove the values from this location and create a new rule that deals with case insensitive comparison.
Thanks @kddejong !
@PatMyron @rjlohan can you two provide some thoughts here? I can confirm that it looks like the RDS resource takes any casing on the Engine.... mysql, MYSQL, mySql, etc. However it looks like as you change the casing it causes the service to recreate the resource?
Most helpful comment
I think this is also a CloudFormation bug, in that it compares the strings in a case-sensitive manner, when RDS underneath compares them in a case-insensitive manner. If you could file a bug there too that would be great.