azure-web-app-service - 动态 IP 限制以添加 IP 地址、vnet 和服务标签 terraform azure
问题描述
到目前为止,在先前主题的帮助下,我能够使用以下代码部署具有 IP 限制的 App 服务:
多变的
locals {
ip_address_list2 = [ {
ip_add : "20.20.20.3/32",
subnet_id = null,
service_tag = null,
prior : "140",
name = "test1"
},
{
ip_add : "10.10.10.2/32",
subnet_id = null,
service_tag = null,
prior : "141",
name = "test2"
},
{
ip_add : "0.0.0.0/0",
subnet_id = null,
service_tag = "AppService"
prior : "142",
name = "Service_Tag"
}]}
应用服务:
site_config {
dynamic "ip_restriction" {
for_each = local.ip_address_list2
content {
ip_address = ip_restriction.value["ip_add"]
action = "Allow"
priority = ip_restriction.value["prior"]
virtual_network_subnet_id = ip_restriction.value["subnet_id"]
service_tag = ip_restriction.value["service_tag"]
name = ip_restriction.value["name"]
}}}
但是,如果我为子网添加以下变量,我会收到错误:
{
ip_add : "0.0.0.0/0",
subnet_id = azurerm_subnet.subnet.id,
service_tag = null
prior : "143",
name = "VirtualNetwork"
}
错误:创建应用服务“hook-service”(资源组“RG-DEV-TEST”):web.AppsClient#CreateOrUpdate:发送请求失败:StatusCode=0 -- 原始错误:Code="BadRequest" Message="IpSecurityRestriction is无效。只能指定 IpAddress 或 VnetSubnetResourceId 属性。” Details=[{"Message":"IpSecurityRestriction 无效。只能指定 IpAddress 或 VnetSubnetResourceId 属性。"},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest"," ExtendedCode":"51021","Message":"IpSecurityRestriction 无效。只能指定 IpAddress 或 VnetSubnetResourceId 属性。","MessageTemplate":"{0} 无效。{1}","Parameters":["
注意:仅使用terraform 计划的验证可以无误地完成。仅在terraform apply后才观察到错误
谢谢
解决方案
您应该使用以下内容:
locals {
ip_address_list = [ {
ip_add : "20.20.20.3/32",
prior : "140",
name = "test1"
},
{
ip_add : "10.10.10.2/32",
prior : "141",
name = "test2"
}
]
ip_address_list2=[ {
subnet = "${data.azurerm_subnet.name.id}" ,
name = "test3"
prior ="143"
}]
}
然后你可以使用:
site_config {
dynamic "ip_restriction"{
for_each=local.ip_address_list
content{
ip_address = ip_restriction.value["ip_add"]
action = "Allow"
priority = ip_restriction.value["prior"]
name = ip_restriction.value["name"]
}
}
dynamic "ip_restriction" {
for_each = local.ip_address_list2
content{
name = ip_restriction.value["name"]
virtual_network_subnet_id = ip_restriction.value["subnet"]
priority = ip_restriction.value["prior"]
}
}
}
输出:
注意: 对于 IP_address 限制,您必须提供 ip_add 、 Prior 和 name。但是对于子网限制,您必须只提供子网 ID、优先级和名称。提供 service_tag 会出现同样的错误。
推荐阅读
- html - 如何在 Django 中使用静态 CSS 文件?
- html - 在 flex 方向列中右对齐
- php - PHP MYSQL 布尔型全文搜索
- fortran - gfortran 在混合整数和实数计算中的精度损失
- assembly - 无法使用 BIOS I/O 从 72 以上的软盘扇区读取
- pthreads - 为什么在使用 pthread 时会出现 Sysmalloc 错误?
- firebase - Firebase Firestore:过滤读取计数的规则
- laravel - 使用 Laravel 作为 Api 和 Vue 作为客户端生成 pdf 文件
- html - Angular 8 Carousel幻灯片动画不起作用
- c# - 如何轻松地将不可扩展属性添加到从 C# 生成的 IDL?