diff --git a/.changelog/33369.txt b/.changelog/33369.txt new file mode 100644 index 00000000000..e5668083f6c --- /dev/null +++ b/.changelog/33369.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_redshift_cluster: Fix `unexpected state` errors on resource Create +``` \ No newline at end of file diff --git a/internal/service/rds/instance_automated_backups_replication.go b/internal/service/rds/instance_automated_backups_replication.go index 8f07da3b131..8643e947114 100644 --- a/internal/service/rds/instance_automated_backups_replication.go +++ b/internal/service/rds/instance_automated_backups_replication.go @@ -7,6 +7,7 @@ import ( "context" "log" "strconv" + "strings" "time" "github.com/aws/aws-sdk-go/aws" @@ -23,10 +24,11 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/verify" ) +// AWS flip-flop on the capitalization of status codes. Use uppercase. const ( - InstanceAutomatedBackupStatusPending = "Pending" - InstanceAutomatedBackupStatusReplicating = "Replicating" - InstanceAutomatedBackupStatusRetained = "Retained" + InstanceAutomatedBackupStatusPending = "PENDING" + InstanceAutomatedBackupStatusReplicating = "REPLICATING" + InstanceAutomatedBackupStatusRetained = "RETAINED" ) // @SDKResource("aws_db_instance_automated_backups_replication") @@ -189,7 +191,8 @@ func FindDBInstanceAutomatedBackupByARN(ctx context.Context, conn *rds.RDS, arn return nil, err } - if status := aws.StringValue(output.Status); status == InstanceAutomatedBackupStatusRetained { + // AWS flip-flop on the capitalization of status codes. Case-insensitive comparison. + if status := aws.StringValue(output.Status); strings.EqualFold(status, InstanceAutomatedBackupStatusRetained) { // If the automated backup is retained, the replication is stopped. return nil, &retry.NotFoundError{ Message: status, @@ -260,7 +263,8 @@ func statusDBInstanceAutomatedBackup(ctx context.Context, conn *rds.RDS, arn str return nil, "", err } - return output, aws.StringValue(output.Status), nil + // AWS flip-flop on the capitalization of status codes. Convert to uppercase. + return output, strings.ToUpper(aws.StringValue(output.Status)), nil } }