AAtsushi's Blog
DevOps

Terraform for Expressions

→ 日本語版を読む

I use Terraform's for_each expression frequently, but I've barely used for expressions, so I tried passing a map type to a for expression and applying an if filter.

locals {
  names ={
    foo = "abc"
    bar = "def"
    baz = "ghi"
  }
}

output "sample" {
  value = local.names
}

output "sample1" {
  value = {for k, v in local.names : v => upper(k) }
}

output "sample2" {
  value = {for k, v in local.names : k => v }
}

output "sample3" {
  value = {for k, v in local.names : k => v if (k == "foo" || k == "baz")}
}

Output results

Outputs:

sample = {
  "bar" = "def"
  "baz" = "ghi"
  "foo" = "abc"
}
sample1 = {
  "abc" = "FOO"
  "def" = "BAR"
  "ghi" = "BAZ"
}
sample2 = {
  "bar" = "def"
  "baz" = "ghi"
  "foo" = "abc"
}
sample3 = {
  "baz" = "ghi"
  "foo" = "abc"
}