diff --git a/aws/resource_aws_rds_cluster.go b/aws/resource_aws_rds_cluster.go index d1e142d42d68..52136a99a65f 100644 --- a/aws/resource_aws_rds_cluster.go +++ b/aws/resource_aws_rds_cluster.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags" ) func resourceAwsRDSCluster() *schema.Resource { @@ -419,7 +420,7 @@ func resourceAwsRdsClusterImport( func resourceAwsRDSClusterCreate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).rdsconn - tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{})) + tags := keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags() // Some API calls (e.g. RestoreDBClusterFromSnapshot do not support all // parameters to correctly apply all settings in one pass. For missing @@ -1032,9 +1033,12 @@ func resourceAwsRDSClusterRead(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("error setting vpc_security_group_ids: %s", err) } - // Fetch and save tags - if err := saveTagsRDS(conn, d, aws.StringValue(dbc.DBClusterArn)); err != nil { - log.Printf("[WARN] Failed to save tags for RDS Cluster (%s): %s", aws.StringValue(dbc.DBClusterIdentifier), err) + tags, err := keyvaluetags.RdsListTags(conn, aws.StringValue(dbc.DBClusterArn)) + if err != nil { + return fmt.Errorf("error listing tags for RDS Cluster (%s): %s", aws.StringValue(dbc.DBClusterArn), err) + } + if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil { + return fmt.Errorf("error setting tags: %s", err) } // Fetch and save Global Cluster if engine mode global @@ -1223,8 +1227,10 @@ func resourceAwsRDSClusterUpdate(d *schema.ResourceData, meta interface{}) error } if d.HasChange("tags") { - if err := setTagsRDS(conn, d, d.Get("arn").(string)); err != nil { - return err + o, n := d.GetChange("tags") + + if err := keyvaluetags.RdsUpdateTags(conn, d.Get("arn").(string), o, n); err != nil { + return fmt.Errorf("error updating tags: %s", err) } else { d.SetPartial("tags") }