Amazon web services 如何使用terraform将默认值设置为aws_iam_策略?
我想动态设置aws策略。设置变量以调用aws\u iam\u策略资源。变量文件为 变量.tfAmazon 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
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我更新了答案,但它不起作用了?它现在起作用了。我刚才数错了。非常感谢。