在 ARM 模板中为所有 PossibleOutboundIpAddresses 配置 FirewallRules
Configure FirewallRules for all PossibleOutboundIpAddresses in ARM Template
我想创建防火墙规则,以便只有我的 Azure Web 应用程序可以连接到我的数据库。如果可能,我想在我的 ARM 模板中执行此操作。到目前为止,这是我尝试过的:
{
"variables": {
"defaultResourceName": "[resourceGroup().name]",
},
"resources": [
{
"type": "Microsoft.Web/sites/firewallRules",
"name": "[concat('AllowAzureIpAddress', copyIndex()",
"apiVersion": "2015-05-01-preview",
"properties": {
"startIpAddress": "[reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses[copyIndex()]]",
"endIpAddress": "[reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses[copyIndex()]]"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers/', toLower(variables('defaultResourceName')))]"
],
"copy": {
"name": "firewallRuleCopy",
"count": "[length(reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses)]"
}
},
]
}
主要问题是获取 PossibleOutboundIpAddresses。我不确定我在这里是否可以使用它们,并且在我尝试验证显示 The template function 'reference' is not expected at this location. Please see https://aka.ms/arm-template-expressions for usage details..
的 ARM 模板时遇到错误
有没有人对如何获取这些 OutboundIpAddresses(最好在列表中以便副本可以使用它们)有任何建议?
你的问题不是以错误的方式使用引用函数,而是你不能在副本 属性 中使用引用函数(副本在 "compile time" 评估,而在运行时引用,所以它无法评估副本的长度)。您可能的解决方法是:嵌套部署。这是我一直在使用的:
{
"name": "firewallRules",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2015-01-01",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://paste.ee/d/Hkebg/0",
"contentVersion": "1.0.0.0"
},
"parameters": {
"prefix": {
"value": "[variables('prefix')]"
},
"iterator": {
"value": "[split(reference(concat(parameters('prefix'), '-', parameters('webAppNames').name), '2016-03-01', 'Full').properties.possibleOutboundIpAddresses, ',')]"
}
}
}
},
我想创建防火墙规则,以便只有我的 Azure Web 应用程序可以连接到我的数据库。如果可能,我想在我的 ARM 模板中执行此操作。到目前为止,这是我尝试过的:
{
"variables": {
"defaultResourceName": "[resourceGroup().name]",
},
"resources": [
{
"type": "Microsoft.Web/sites/firewallRules",
"name": "[concat('AllowAzureIpAddress', copyIndex()",
"apiVersion": "2015-05-01-preview",
"properties": {
"startIpAddress": "[reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses[copyIndex()]]",
"endIpAddress": "[reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses[copyIndex()]]"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers/', toLower(variables('defaultResourceName')))]"
],
"copy": {
"name": "firewallRuleCopy",
"count": "[length(reference('Microsoft.Web/sites', variables('defaultResourceName')).possibleOutboundIpAddresses)]"
}
},
]
}
主要问题是获取 PossibleOutboundIpAddresses。我不确定我在这里是否可以使用它们,并且在我尝试验证显示 The template function 'reference' is not expected at this location. Please see https://aka.ms/arm-template-expressions for usage details..
有没有人对如何获取这些 OutboundIpAddresses(最好在列表中以便副本可以使用它们)有任何建议?
你的问题不是以错误的方式使用引用函数,而是你不能在副本 属性 中使用引用函数(副本在 "compile time" 评估,而在运行时引用,所以它无法评估副本的长度)。您可能的解决方法是:嵌套部署。这是我一直在使用的:
{
"name": "firewallRules",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2015-01-01",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://paste.ee/d/Hkebg/0",
"contentVersion": "1.0.0.0"
},
"parameters": {
"prefix": {
"value": "[variables('prefix')]"
},
"iterator": {
"value": "[split(reference(concat(parameters('prefix'), '-', parameters('webAppNames').name), '2016-03-01', 'Full').properties.possibleOutboundIpAddresses, ',')]"
}
}
}
},