当使用ARM模板部署资源时,可能会遇到部署失败的情况。以下是一些常见的问题和解决方法,包含代码示例:
例如,下面的示例模板中缺少了一个逗号,导致语法错误:
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "mystorageaccount",
"apiVersion": "2021-06-01",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
}
}
{
"type": "Microsoft.Web/sites",
"name": "mysite",
"apiVersion": "2021-06-01",
"location": "eastus",
"dependsOn": [
"mystorageaccount"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'myserverfarm')]"
}
}
]
}
解决方法:在两个资源之间添加逗号,如下所示:
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "mystorageaccount",
"apiVersion": "2021-06-01",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
}
},
{
"type": "Microsoft.Web/sites",
"name": "mysite",
"apiVersion": "2021-06-01",
"location": "eastus",
"dependsOn": [
"mystorageaccount"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'myserverfarm')]"
}
}
]
}
dependsOn
属性可以用于指定其他资源的依赖关系。例如,下面的示例模板中,mysite
资源依赖于mystorageaccount
资源,但没有正确声明该依赖关系:
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "mystorageaccount",
"apiVersion": "2021-06-01",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
}
},
{
"type": "Microsoft.Web/sites",
"name": "mysite",
"apiVersion": "2021-06-01",
"location": "eastus",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'myserverfarm')]"
}
}
]
}
解决方法:在mysite
资源中添加正确的dependsOn
属性,指定mystorageaccount
资源的名称:
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "mystorageaccount",
"apiVersion": "2021-06-01",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
}
},
{
"type": "Microsoft.Web/sites",
"name": "mysite",
"apiVersion": "2021-06-01",
"location": "eastus",
"dependsOn": [
"mystorageaccount"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'myserverfarm')]"
}
}
]
}
例如,下面的示例模板中,mystorageaccount
资源的名称与已存在的资源名称冲突:
{
"resources": [