Amazon web services 如何使用terraform将默认值设置为aws_iam_策略?

Amazon web services 如何使用terraform将默认值设置为aws_iam_策略?,amazon-web-services,terraform,amazon-iam,Amazon Web Services,Terraform,Amazon Iam,我想动态设置aws策略。设置变量以调用aws\u iam\u策略资源。变量文件为 变量.tf variable "name" { default = "" type = string } variable "policy" { default = "" type = string } 在main.tf中 resource "aws_iam_policy" "my_po

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

变量.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)

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

托管策略名称不能为空。在以下
[\w+=,.@-]+
模式下需要At

但是如果您有空字符串,要自动生成名称,可以尝试以下操作:

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

非常感谢。也许应该是
name=var.name!="" ? 变量名称:空
。是否可以使用
count=var.policy?1:0
要检查是否设置了策略变量,要选择是否运行此资源任务?@Miantian是的,我更正了答案。是的,如果没有给出,您也可以使用。您知道如何使用它吗?@Miantian我更新了答案,但它不起作用了?它现在起作用了。我刚才数错了。非常感谢。