使用Terraform配置Azure App Service IP限制与子网访问规则报错咨询
修复方案
报错问题解决
报错原因:cidrhost 函数要求入参必须是带掩码的标准CIDR格式,你传入的是纯IPv4地址,没有后缀掩码标识,所以解析失败。
修复方式:直接将单个IP拼接为/32的CIDR格式即可,无需调用cidrhost函数,修改后的完整配置如下:
site_config { dynamic "ip_restriction" { for_each = var.ip_address_list content { ip_address = "${ip_restriction.value}/32" action = "Allow" # 优先级从100开始依次递增,避免和子网规则冲突 priority = 100 + index(var.ip_address_list, ip_restriction.value) } } # 新增虚拟子网访问限制规则 ip_restriction { name = "Subnet" action = "Allow" virtual_network_subnet_id = azurerm_subnet.subnet.id priority = 200 ip_address = null service_tag = null } }
配置注意事项
- 优先级数值越小规则优先级越高,你可以根据实际业务需求调整IP规则和子网规则的优先级数值
- 需确保引用的
azurerm_subnet.subnet.id为正确的子网资源ID,且该子网已启用Microsoft.Web的Service Endpoint - 如果后续需要支持传入带掩码的CIDR地址段,可以额外增加变量校验逻辑,动态判断是否需要拼接/32后缀
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

