You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:10:26