如何在Terraform中配置Ingress安全组的端口范围?
解决Terraform中AWS安全组Ingress端口范围配置问题
你遇到的问题核心是Terraform的from_port和to_port字段要求传入数值类型,而非AWS CLI中使用的端口范围字符串格式。
错误原因
你在配置中直接写了from_port = 50000-50001,这在Terraform里会被解析为数值计算(50000减50001),结果为-1,这就是plan输出里端口显示为-1的原因。
正确配置方式
Terraform需要分别指定范围的起始端口和结束端口,对应CLI中的--port 50000-50001参数:
方式1:使用aws_security_group内嵌ingress块
resource "aws_security_group" "allow_tls" { name = "allow_tls" description = "Allow TLS inbound traffic" vpc_id = aws_vpc.main.id ingress { description = "Allow ports 50000-50001 TCP" from_port = 50000 # 端口范围起始值 to_port = 50001 # 端口范围结束值 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } tags = { Name = "allow_tls" } }
方式2:使用aws_security_group_rule独立资源
# 先创建基础安全组 resource "aws_security_group" "allow_tls" { name = "allow_tls" description = "Allow TLS inbound traffic" vpc_id = aws_vpc.main.id tags = { Name = "allow_tls" } } # 添加端口范围规则 resource "aws_security_group_rule" "allow_port_range" { type = "ingress" from_port = 50000 to_port = 50001 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] security_group_id = aws_security_group.allow_tls.id }
配置完成后执行terraform plan,就能看到from_port和to_port被正确设置为50000和50001,实现与CLI命令完全一致的安全组规则。
内容的提问来源于stack exchange,提问作者pcampana
相关产品推荐
相关产品推荐

