Terraform 在单个条件中匹配多个条件

TFa*_*aws 1 if-statement terraform hcl

我有 4 个 env,qa 和 dev 使用一个 ID,uat 和 prod 使用另一个 ID。我正在尝试执行 if else,基本上,如果 env 是 dev 或 qa,则使用 id1,否则使用 id2。这是我尝试过的:

\n
locals{\n  endpoint_id = "${var.env == "dev" || "qa" ? "id1" : "id2"}"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这就是我得到的:

\n
Error: Invalid operand\n\xe2\x94\x82 \n\xe2\x94\x82   on ssm-parameters.tf line 2, in locals:\n\xe2\x94\x82    2:   endpoint_id = "${var.env == "dev" || "qa" ? "id1" : "id2"}"\n\xe2\x94\x82 \n\xe2\x94\x82 Unsuitable value for right operand: a bool is required.\n
Run Code Online (Sandbox Code Playgroud)\n

显然我不能在这里做“或”。我该怎么办呢?谢谢。

\n

Ari*_*stu 5

怎么样:

locals{
  endpoint_id = length(regexall("dev|qa", var.env)) > 0 ? "id1" : "id2"
}
Run Code Online (Sandbox Code Playgroud)

这将检查是否var.env匹配devqa,输出是一个列表,如果存在某些匹配,则列表将至少有一个元素,否则为零。