Terraform创建AWS Network ACL无法配置Type字段的技术咨询
在Terraform中配置AWS NACL的「Type」等价选项
AWS控制台里的「Type」是封装后的快捷预设选项(比如HTTP、HTTPS、SSH等),Terraform并没有直接对应这个字段的参数,需要通过组合以下参数实现相同功能:
匹配控制台Type的核心参数组合
控制台每个Type都对应特定的协议和端口范围,Terraform通过以下参数配置:protocol:指定协议(如tcp/udp/icmp,也可使用对应数字编码,比如tcp对应6)from_port/to_port:指定端口范围(单个端口时两个值设为一致)- 针对ICMP类型,需额外添加
icmp_type_code块设置类型和代码
示例代码
以下是对应常见控制台Type的Terraform配置:# 对应控制台Type:SSH resource "aws_network_acl_rule" "ssh_allow" { network_acl_id = aws_network_acl.example.id rule_number = 100 egress = false rule_type = "allow" protocol = "tcp" from_port = 22 to_port = 22 cidr_block = "0.0.0.0/0" } # 对应控制台Type:HTTP resource "aws_network_acl_rule" "http_allow" { network_acl_id = aws_network_acl.example.id rule_number = 110 egress = false rule_type = "allow" protocol = "tcp" from_port = 80 to_port = 80 cidr_block = "0.0.0.0/0" } # 对应控制台Type:All ICMP - IPv4 resource "aws_network_acl_rule" "icmp_allow" { network_acl_id = aws_network_acl.example.id rule_number = 120 egress = false rule_type = "allow" protocol = "icmp" cidr_block = "0.0.0.0/0" icmp_type_code { type = 0 code = 0 } }无直接Type字段的原因
Terraform的AWS Provider直接映射AWS底层API参数,而AWS API并未提供与控制台「Type」完全对应的参数——控制台的Type是AWS为简化操作封装的预设组合,因此需要在Terraform中手动配置协议和端口来匹配。
内容的提问来源于stack exchange,提问作者Alfredo Bosca
相关产品推荐
相关产品推荐

