英文:
Deployment template parse failed: 'Required property 'type' not found in JSON. Path '', line, position.'. (Code: InvalidTemplate)
问题
我在Azure门户中部署了SQL托管实例,然后在实际部署之前,有一个保存模板以用于将来部署的选项,我选择了这个选项。
然后我删除了托管实例,现在我需要使用生成的模板重新部署它。
当我在Azure门户中选择“部署自定义模板”,从库中选择一个模板,然后Azure门户抛出验证错误:
"部署模板解析失败:在JSON中未找到必需的属性'type'。路径'',第256行,位置27。' (代码:InvalidTemplate)
模板由两个文件组成,parameters.json和template.json
查看parameters.json,它是一个很短的文件,甚至没有256行,而template.json有256行(以及更多内容):
"federatedClientId":{
"type": "string",
"defaultValue": ""
},
这有点奇怪 - 它有'type'属性。
在Google和Bing AI中搜索没有给我提供有意义的解决方案。我该如何修复它并使其工作?
英文:
I deployed SQL Managed Instance in Azure using Azure portal, and before actual deploy it has an option of saving template for automation of future deploys, which I did.
Then I deleted managed instance, and now I need to re-deploy it using generated template.
When I go to "Deploy a custom template" in Azure portal, select a template from a library, and then Azure portal throws validation error:
>Deployment template parse failed: 'Required property 'type' not found in JSON. Path '', line 256, position 27.'. (Code: InvalidTemplate)
Template consists of two files, parameters.json and template.json
Looking at parameters.json, it is short file it does not even have line 256, while template.json, has line 256 (and much more):
>255 "federatedClientId": {
>256 "type": "string",
257 "defaultValue": ""
258 },
Which is kind of strange - it has 'type' property.
Googling and using Bing AI did not give me meaningful solution. How can I fix it and make it work ?
答案1
得分: 1
错误消息显示模板无效。确保模板正确格式化(Json),没有多余的空格和' '
。也可以使用模板验证器来验证 Arm 模板。
如果模板看起来仍然正确,请尝试使用所有必需属性重新部署它。
与您一样,我创建了一个 SQL 托管实例并删除了部署。当我使用以下 parameters.json
文件创建自定义模板时,它按预期工作。
部署成功:
您还可以参考MSDoc查看常见的 ARM 模板部署错误。
英文:
> Deployment template parse failed: 'Required property 'type' not found in JSON. Path '', line, position.'. (Code: InvalidTemplate): -
The error message shows that the template is invalid. Make sure that the template is properly formatted (Json
) free of excessive spaces
&
' '
. The Arm template can also be validated using template validator.
If the template still looks good, try redeploying it with all of the required properties.
As you've done, I created a SQL managed instance and deleted the deployment. And it worked as intended when I used a custom template using the following parameters.json
file.
"parameters": {
"location": {
"defaultValue": "[resourceGroup().location]",
"type": "String",
"metadata": {
"description": "The location of the Managed Instance. Default is the location of the selected resource group."
}
},
"managedInstanceName": {
"type": "String",
"metadata": {
"description": "The name of the Managed Instance."
}
},
"deployInExistingSubnet": {
"defaultValue": false,
"type": "Bool",
"metadata": {
"description": "Determines whether the Managed Instance will be deployed in an existing subnet. Subnet parameters need to be valid if this is set."
}
},
"virtualNetworkResourceGroupName": {
"defaultValue": "[resourceGroup().name]",
"type": "String",
"metadata": {
"description": "The resource group where the networking resources will be created or updated. Default is the same resource group as Managed Instance."
}
},
"virtualNetworkName": {
"defaultValue": "[concat('vnet-', parameters('managedInstanceName'))]",
"type": "String",
"metadata": {
"description": "The virtual network name. Leave empty for the default value."
}
},
"subnetName": {
"defaultValue": "ManagedInstance",
"type": "String",
"metadata": {
"description": "The subnet name. Leave empty for the default value."
}
},
"skuName": {
"defaultValue": "GP_Gen5",
"allowedValues": [
"GP_Gen4",
"GP_Gen5",
"GP_G8IM",
"GP_G8IH",
"BC_Gen4",
"BC_Gen5",
"BC_G8IM",
"BC_G8IH"
],
"type": "String",
"metadata": {
"description": "Managed instance SKU. If SKU is not set, skuEdition and hardwareFamily values have to be populated."
}
},
"skuEdition": {
"defaultValue": "GeneralPurpose",
"allowedValues": [
"GeneralPurpose",
"BusinessCritical"
],
"type": "String",
"metadata": {
"description": "SKU Edition for the Managed Instance. In case skuName is set this parameter is ignored."
}
},
"hardwareFamily": {
"defaultValue": "Gen5",
"allowedValues": [
"Gen4",
"Gen5",
"Gen8IM",
"Gen8IH"
],
"type": "String",
"metadata": {
"description": "Compute generation for the instance. In case skuName is set this parameter is ignored."
}
},
"storageSizeInGB": {
"defaultValue": 256,
"minValue": 32,
"type": "Int",
"metadata": {
"description": "Determines how much Storage size in GB to associate with instance. Increments of 32 GB allowed only."
}
},
"vCores": {
"defaultValue": 8,
"allowedValues": [
4,
8,
16,
24,
32,
40,
64,
80,
96,
128
],
"type": "Int",
"metadata": {
"description": "The number of vCores."
}
},
"licenseType": {
"defaultValue": "LicenseIncluded",
"allowedValues": [
"LicenseIncluded",
"BasePrice"
],
"type": "String",
"metadata": {
"description": "Determines license pricing model. Select 'LicenseIncluded' for a regular price inclusive of a new SQL license. Select 'Base Price' for a discounted AHB price for bringing your own SQL licenses."
}
},
"hybridSecondaryUsage": {
"defaultValue": "Active",
"allowedValues": [
"Active",
"Passive"
],
"type": "String",
"metadata": {
"description": "Determines whether Hybrid failover rights benefit is activated. Select 'Passive' to enable this benefit."
}
},
"dnsZonePartner": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "The resource id of another Managed Instance whose DNS zone this Managed Instance will share after creation."
}
},
"collation": {
"defaultValue": "SQL_Latin1_General_CP1_CI_AS",
"type": "String",
"metadata": {
"description": "Collation of the Managed Instance."
}
},
"timezoneId": {
"defaultValue": "UTC",
"type": "String",
"metadata": {
"description": "Id of the timezone. Allowed values are timezones supported by Windows."
}
},
"proxyOverride": {
"defaultValue": "Proxy",
"allowedValues": [
"Proxy",
"Redirect"
],
"type": "String",
"metadata": {
"description": ""
}
},
"publicDataEndpointEnabled": {
"defaultValue": false,
"type": "Bool",
"metadata": {
"description": "Determines whether public data endpoint will be enabled, required for clients outside of the connected virtual networks. Public endpoint will always default to Proxy connection mode."
}
},
"nsgForPublicEndpoint": {
"defaultValue": "",
"allowedValues": [
"",
"allowFromInternetTo3342NSG",
"allowFromAzureCloudTo3342NSG",
"disallowTrafficTo3342NSG"
],
"type": "String",
"metadata": {
"description": "Determines which NSG inbound traffic rule to add for the public endpoint. In case publicDataEndpointEnabled is false this parameter is ignored."
}
},
"minimalTlsVersion": {
"defaultValue": "1.2",
"allowedValues": [
"1.0",
"1.1",
"1.2"
],
"type": "String",
"metadata": {
"description": "The minimum TLS version enforced by the Managed Instance for inbound connections."
}
},
"administratorLogin": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "The login of the Managed Instance admin."
}
},
"administratorLoginPassword": {
"defaultValue": "",
"type": "SecureString",
"metadata": {
"description": "The password of the Managed Instance admin."
}
},
"administrators": {
"defaultValue": {},
"type": "Object"
},
"managedInstanceTags": {
"defaultValue": {},
"type": "Object",
"metadata": {
"description": "Resource tags to associate with the instance."
}
},
"requestedBackupStorageRedundancy": {
"defaultValue": "Geo",
"allowedValues": [
"Geo",
"Zone",
"Local",
"GeoZone"
],
"type": "String",
"metadata": {
"description": "Option for configuring backup storage redundancy. Selecting 'Geo' will enable 'RA-GRS'."
}
},
"maintenanceConfigurationId": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "Maintenance configuration id assigned to the database. This configuration defines the period when the maintenance updates will occur."
}
},
"zoneRedundant": {
"defaultValue": false,
"type": "Bool",
"metadata": {
"description": "Determines whether zone redundancy will be enabled."
}
},
"enableADS": {
"defaultValue": false,
"type": "Bool"
},
"enableVA": {
"defaultValue": false,
"type": "Bool"
},
"identity": {
"defaultValue": {},
"type": "Object"
},
"primaryUserAssignedIdentityId": {
"defaultValue": "",
"type": "String"
},
"federatedClientId": {
"defaultValue": "",
"type": "String"
},
"servicePrincipal": {
"defaultValue": {},
"type": "Object"
}
}
Deployment succeeded:
You can also refer MSDoc for the common ARM template deployment errors.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论