【问题标题】:Terraform IF conditionTerraform IF 条件
【发布时间】:2020-08-20 14:59:27
【问题描述】:

我正在处理 AWS rds postgresql 实例,我们正在使用 IAM 身份验证。我已经创建了几个角色,但是对于一个角色,我需要授予授予权限。我尝试使用 if 条件,但我收到一个错误,即该属性不允许空值。我需要为 dev_role 中的用户传递授予权限以使用 IAM 凭证访问数据库。

还有哪些其他解决方案,我可以用来解决这个错误?我需要忽略这个参数。

# Create roles/groups
resource "postgresql_role" "pgauth_roles" {
  provider = postgresql.pg1
  for_each = toset(var.role_name)
  name     = each.value
  roles    = [each.value == "dev_role" ? "rds_iam" : null ]
}


  on ../../../../tf_module_amp_rds/pg_roles.tf line 14, in resource "postgresql_role" "pgauth_roles":
  14:   roles    = [each.value == "dev_role" ? "rds_iam" : null]

Null values are not allowed for this attribute value.

Terraform v0.12.20 + 提供者.aws v2.60.0 + provider.postgresql v1.5。

【问题讨论】:

    标签: amazon-web-services terraform amazon-rds terraform-provider-aws


    【解决方案1】:

    尝试使用空数组[]
    像这样的:

    resource "postgresql_role" "pgauth_roles" {
      provider = postgresql.pg1
      for_each = toset(var.role_name)
      name     = each.value
      roles    = each.value == "dev_role" ? ["rds_iam"] : []
    }
    
    

    【讨论】:

    • 一些额外的上下文说明为什么会这样:最初的给定示例生成了一个 包含 null 的列表,例如 [null],提供者的验证规则拒绝了该列表。如果roles 是一个可选参数,那么它也可以将其设置为null(而不是[null])以完全省略它,但在这种情况下,我希望提供者无论如何都会将这两者视为等效的。
    猜你喜欢
    • 2023-01-30
    • 2019-04-25
    • 2021-09-25
    • 2022-10-16
    • 2023-02-14
    • 2020-04-26
    • 2021-12-27
    • 2017-12-23
    • 2018-01-21
    相关资源
    最近更新 更多