@@ -648,7 +648,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
648648 v = varOverride
649649 builder .WriteString (fmt .Sprintf ("%s = %v\n " , tfAttribute , v ))
650650 } else {
651- builder .WriteString (fmt .Sprintf ("%s = %q\n " , tfAttribute , v ))
651+ builder .WriteString (fmt .Sprintf ("%s = %q\n " , tfAttribute , escapeTFStrings ( v ) ))
652652 }
653653 continue
654654 case int , bool , float64 :
@@ -680,7 +680,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
680680 trueListVal = varOverride
681681 builder .WriteString (fmt .Sprintf ("%v,\n " , trueListVal ))
682682 } else {
683- builder .WriteString (fmt .Sprintf ("%q,\n " , trueListVal ))
683+ builder .WriteString (fmt .Sprintf ("%q,\n " , escapeTFStrings ( trueListVal ) ))
684684 }
685685 case int , bool , float64 :
686686 builder .WriteString (fmt .Sprintf ("\" %v\" ,\n " , trueListVal ))
@@ -719,7 +719,7 @@ func getHCLStringFromMap(builder *strings.Builder, sourceAttributes map[string]i
719719 mapVal = varOverride
720720 builder .WriteString (fmt .Sprintf ("\" %s\" = %v\n " , mapKey , mapVal ))
721721 } else {
722- builder .WriteString (fmt .Sprintf ("\" %s\" = %q\n " , mapKey , mapVal ))
722+ builder .WriteString (fmt .Sprintf ("\" %s\" = %q\n " , mapKey , escapeTFStrings ( mapVal ) ))
723723 }
724724 case int , bool , float64 :
725725 builder .WriteString (fmt .Sprintf ("\" %s\" = \" %v\" \n " , mapKey , mapVal ))
@@ -998,6 +998,13 @@ func convertResourceDataToMap(schemaMap map[string]*schema.Schema, d *schema.Res
998998 return result
999999}
10001000
1001+ // This function should only be used to escape TF-characters in strings
1002+ func escapeTFStrings (val string ) string {
1003+ val = strings .ReplaceAll (val , "%{" , "%%{" )
1004+ val = strings .ReplaceAll (val , "${" , "$${" )
1005+ return val
1006+ }
1007+
10011008func generateTerraformNameFromResource (resourceAttributes map [string ]interface {}, resourceSchema map [string ]* schema.Schema ) (string , error ) {
10021009 possibleNameAttributes := []string {
10031010 "display_name" ,
0 commit comments