How do you do simple string concatenation in Terraform?

Try Below data resource :

data "null_data_source" "api_gw_url" {
    inputs = {
      main_api_gw = "app.api${var.env_name == "prod" ? "." : ".${var.env_name}."}mydomain.com"
    }
}

so to add a simple answer to a simple question:

  • enclose all strings you want to concatenate into one pair of ""
  • reference variables inside the quotes with ${var.name}

Example: var.foo should be concatenated with bar string and separated by a dash

Solution: "${var.foo}-bar"


I know this was already answered, but I wanted to share my favorite:

format("%s/%s",var.string,"string2")

Real world example:

locals {
 documents_path = "${var.documents_path == "" ? format("%s/%s",path.module,"documents") : var.documents_path}" 
}

More info:
https://www.terraform.io/docs/configuration/functions/format.html


For Terraform 0.12 and later, you can use join() function:

join(separator, list)

Example:

> join(", ", ["foo", "bar", "baz"])
foo, bar, baz
> join(", ", ["foo"])
foo

If you just want to concatenate without a separator like "foo"+"bar" = "foobar", then:

> join("", ["foo", "bar"])
foobar

Reference: https://www.terraform.io/docs/configuration/functions/join.html

Use the Interpolation Syntax for versions < 0.12