如何使用 terraform 将默认值设置为 aws_iam_policy?

How to set default value to aws_iam_policy with terraform?

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

variables.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)

默认不设置policy就不能设置为""字符串吗?

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

但是为了自动生成名字如果你有空字符串,你可以试试下面的方法:

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