【问题标题】:How to set default value to aws_iam_policy with terraform?如何使用 terraform 将默认值设置为 aws_iam_policy?
【发布时间】:2021-07-15 10:10:02
【问题描述】:

我想动态设置 aws 政策。设置变量以调用aws_iam_policy 资源。变量文件为

变量.tf

variable "name" {
  default = ""
  type = string
}

variable "policy" {
  default = ""
  type = string
}

在 main.tf 中

resource "aws_iam_policy" "my_policy" {
  name   = var.name
  policy = var.policy
}

当运行tflint

名称变量得到:

Error: name must be 1 characters or higher (aws_iam_policy_invalid_name)
Error: "" does not match valid pattern ^[\w+=,.@-]+$ (aws_iam_policy_invalid_name)

得到的策略变量:

Error: policy must be 1 characters or higher (aws_iam_policy_invalid_policy)
Error: "" does not match valid pattern ^[\x{0009}\x{000A}\x{000D}\x{0020}-\x{00FF}]+$ (aws_iam_policy_invalid_policy)

如果默认不设置策略,不能设置为“”字符串吗?

【问题讨论】:

    标签: amazon-web-services terraform amazon-iam


    【解决方案1】:

    托管策略名称不能为空字符串。 least 1 character 需要遵循 [\w+=,.@-]+ 模式。

    但是如果你有空字符串自动生成名字,你可以尝试以下:

    resource "aws_iam_policy" "my_policy" {
      count  = var.policy != "" ? 1 : 0 
      name   = var.name != "" ? var.name : null
      policy = var.policy
    }
    

    【讨论】:

    • 谢谢。也许应该是name = var.name != "" ? var.name : null。是否可以使用count = var.policy ? 1 : 0 检查是否已设置策略变量,选择是否运行此资源任务?
    • @Miantian 是的,我更正了答案。是的,如果没有给出,您也可以使用 could 跳过策略的创建。
    • 你知道怎么用吗?
    • @Miantian 我更新了答案,还是不行?
    • 现在可以使用了。我刚才用错误的方式设置了计数。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2020-12-14
    相关资源
    最近更新 更多