Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 预处理地形局部变量_Terraform - Fatal编程技术网

Terraform 预处理地形局部变量

Terraform 预处理地形局部变量,terraform,Terraform,我有一组TF局部变量,,,它使用了一些三元运算符,,,当我通过var.env stg时,它工作得很好 locals { allowed_roles = [ "rqm-airflow-task-prd", "${var.env == "stg" ? "rqm-airflow-task-stg" : "" }", "rqm-airflow-task-rnd&quo

我有一组TF局部变量,,,它使用了一些三元运算符,,,当我通过var.env stg时,它工作得很好

locals {
  allowed_roles = [
    "rqm-airflow-task-prd",
    "${var.env == "stg" ? "rqm-airflow-task-stg" : "" }",
    "rqm-airflow-task-rnd",
    "rqm-ecs-pag_mock-task-role-prd",
    "${var.env == "stg" ? "rqm-ecs-pag_mock-task-role-stg" : "" }"
}
data "aws_iam_role" "allowed_roles" {
  count = "${length(local.allowed_roles)}"
  name  = "${local.allowed_roles[count.index]}"
} 
但stg是一个动态的环境,并不总是持续存在, 因此,删除stg env时,三元运算符值变为空“”,代码将使用var.env重新运行,如“prd”所示,然后
data.aws_iam_role
失败

Error: Error refreshing state: 1 error occurred:
    * data.aws_iam_role.allowed_roles: 4 errors occurred:
    * data.aws_iam_role.allowed_roles[7]: data.aws_iam_role.allowed_roles.7: error reading IAM Role (): InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, GetRoleInput.RoleName.
    * data.aws_iam_role.allowed_roles[1]: data.aws_iam_role.allowed_roles.1: error reading IAM Role (): InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, GetRoleInput.RoleName.

有没有办法对其进行预处理?

看起来您需要的是:

compact
获取字符串列表并返回一个新列表,其中删除了所有空字符串元素

locals {
  allowed_roles = compact([
    "rqm-airflow-task-prd",
    var.env == "stg" ? "rqm-airflow-task-stg" : "",
    "rqm-airflow-task-rnd",
    "rqm-ecs-pag_mock-task-role-prd",
    var.env == "stg" ? "rqm-ecs-pag_mock-task-role-stg" : "",
  ])
}