Azure Arm 模板"resource not defined"即使它是



我正在尝试引用ip地址并得到以下错误:

Deployment template validation failed: 'The resource 'Microsoft.Network/publicIPAddresses/ip-xxxx-dev' is not defined in the template

我的手臂模板由几个部分组成,这一部分是一个部署:

{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2019-10-01",
"name": "createK8s",
"properties": {
"mode": "Incremental",
"template": 
see template example below
,
"parameters": {
"IP-name": {
"value": "[parameters('IP-name')]"
}
"NSG-name": {
"value": "[parameters('NSG-name')]"
}
}
}
}
}
在模板中,我定义并尝试使用ip地址:
{
"apiVersion": "2019-02-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('IP-name')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"tags": {},
"properties": {
"publicIPAllocationMethod": "Static",
"publicIPAddressVersion": "IPv4",
"ipTags": []
}
},

在我的网络安全网关中,我尝试在规则中这样使用它:

{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2020-05-01",
"name": "[parameters('NSG-name')]",
"dependsOn": [ "[parameters('IP-name')]"],
"location": "[resourceGroup().location]",
"properties": {
"securityRules": [
{
"name": "XXXXXX-TCP-80-Internet",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "80",
"sourceAddressPrefix": "Internet",
"destinationAddressPrefix": "[reference(ResourceId('Microsoft.Network/publicIPAddresses',parameters('IP-name'))).ipAddress]",
"access": "Allow",
"priority": 500,
"direction": "Inbound",
"sourcePortRanges": [],
"destinationPortRanges": [],
"sourceAddressPrefixes": [],
"destinationAddressPrefixes": []
}
},
{
"name": "XXXXXX-TCP-443-Internet",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "443",
"sourceAddressPrefix": "Internet",
"destinationAddressPrefix": "[reference(ResourceId('Microsoft.Network/publicIPAddresses',parameters('IP-name'))).ipAddress]",

"access": "Allow",
"priority": 501,
"direction": "Inbound",
"sourcePortRanges": [],
"destinationPortRanges": [],
"sourceAddressPrefixes": [],
"destinationAddressPrefixes": []
}
}

]
}
}

我不明白这个错误,根据文档使用资源id意味着它不应该是一个问题,如果资源没有在模板中定义,资源实际上是在模板中定义的。我尝试了一些变化,但都以同样的方式失败了。我还清理了资源组,希望在实际部署ip时(我使用增量部署)它会解决问题,但是

根据您在评论中提到的文档,

当引用一个没有部署在同一个模板中的资源时,提供资源ID和apiVersion。例如:

"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')), '2020-07-01')]"

检查这里。

最新更新