AWS Terraform-在资源上使用动态块



我正试图用动态块为AWS安全组编写Terraform模块,但我遇到了以下错误:

│ 
│   on main.tf line 17, in module "security_group":
│   17:     ingress = {
│ 
│ The argument "ingress" was already set at main.tf:8,5-12. Each argument may be set only once.

我已经遵循了文档,但我仍然有错误我使用的是Terraform 0.15.1和AWS提供商版本3.38.0

这是我的代码

/模块/安全组/main.tf

resource "aws_security_group" "main" {
.......
dynamic "ingress" {
for_each = var.ingress
content {
description      = ingress.value["description"]
from_port        = ingress.value["from_port"]
to_port          = ingress.value["to_port"]
protocol         = ingress.value["protocol"]
cidr_blocks      = ingress.value["cidr_blocks"]
ipv6_cidr_blocks = ingress.value["ipv6_cidr_blocks"]
}

}
.......
}

/模块/安全组/变量.tf

variable "ingress" {
description = ""
type        = object({
description = string
from_port   = number
to_port     = number
protocol    = string
cidr_blocks = list(string)
ipv6_cidr_blocks = list(string)
})
default     = {
description      = ""
from_port        = 80
to_port          = 80
protocol         = "tcp"
cidr_blocks      = []
ipv6_cidr_blocks = []
}
}

/主.tf

module "security_group" {
source = "./modules/security_group"
name        = "${var.project}-sg"
description = "security group testing"
vpc_id      = "my-vpc"
ingress = {
description = ""
from_port = 22
to_port   = 22
protocol  = "tcp"
cidr_blocks = []
ipv6_cidr_blocks = []
}
ingress = {
description = ""
from_port = 80
to_port   = 80
protocol  = "tcp"
cidr_blocks = []
ipv6_cidr_blocks = []
}
}

您有ingress参数。我想你想有一个作为列表:

variable "ingress" {
description = ""
type        = list(object({
description = string
from_port   = number
to_port     = number
protocol    = string
cidr_blocks = list(string)
ipv6_cidr_blocks = list(string)
}))
default     = [{
description      = ""
from_port        = 80
to_port          = 80
protocol         = "tcp"
cidr_blocks      = []
ipv6_cidr_blocks = []
}
}]

module "security_group" {
source = "./modules/security_group"
name        = "${var.project}-sg"
description = "security group testing"
vpc_id      = "my-vpc"
ingress = [{
description = ""
from_port = 22
to_port   = 22
protocol  = "tcp"
cidr_blocks = []
ipv6_cidr_blocks = []
}, {
description = ""
from_port = 80
to_port   = 80
protocol  = "tcp"
cidr_blocks = []
ipv6_cidr_blocks = []
}]
}

相关内容

  • 没有找到相关文章

最新更新