【发布时间】:2021-10-18 10:56:58
【问题描述】:
我需要创建具有以下要求的安全组规则。
Port 22 should have CIDR as [1,2,3]
Port 443 & 80 each should have CIDR as [4,5]
ingress_ports_tcp = [[22], [443,80]]
ingress_cidr_tcp = [[1,2,3], [4,5]]
I am trying below code
resource "aws_security_group_rule" "tcp1" {
type = "ingress"
count = (length(var.ingress_cidr_tcp) == length(var.ingress_ports_tcp)) && ( var.ingress_cidr_tcp != "" || var.ingress_ports_tcp != "" ) ? length(var.ingress_ports_tcp) : 0
dynamic "sg" {
for_each = toset(var.ingress_ports_tcp[count.index])
content {
from_port = each.value
to_port = each.value
cidr_blocks = var.ingress_cidr_tcp[count.index]
}
}
security_group_id = aws_security_group.default-sg[0].id
}
错误:
Error:Missing required argument on security-group.tf line 16, in resource \"aws_security_group_rule\" \"tcp1\"resource \"aws_security_group_rule\" \"tcp1\" The argument \"from_port\" is required, but no definition was found.Error: Missing required argument\ on security-group.tf line 16, in resource \"aws_security_group_rule\" \"tcp1\"resource \"aws_security_group_rule\" \"tcp1\" The argument \"to_port\" is required, but no definition was found.Error: Unsupported block type in resource \"aws_security_group_rule\" \"tcp1\":\n 19: dynamic \"sg\" Blocks of type \"sg\" are not expected here.
请帮忙。
【问题讨论】:
-
这些变量是什么?
var.ingress_cidr_tcp) == length(var.ingress_ports_tcp)) && ( var.ingress_cidr_tcp != "" || var.ingress_ports_tcp != "" ) ? length(var.ingress_ports_tcp?它们都没有被定义,也没有显示它们的值。 -
相应地修改了查询。请检查。
-
我正在尝试使用动态块来实现这一点 端口 22 的 CIDR 应为 [1,2,3] 端口 443 和 80 的 CIDR 应为 [4,5]
-
不可能。
aws_security_group_rule没有任何动态块。 -
好的,那我们如何实现呢?请给出一些想法。
标签: amazon-web-services terraform terraform-provider-aws