azure - 无法为 Azure 资源管理器模板使用资源函数
问题描述
我的参数文件如下所示:
{
"$schema":"http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion":"1.0.0.0",
"parameters":{
"siteName":{
"value":"my-api-application"
},
"appServicePlanName":{
"value":"MyServicePlan"
},
"siteLocation":{
"value":"West US"
},
"vaultResourceGroup": {
"value":"my-vault-res-group"
},
"vaultName": {
"value":"my-keyvault"
},
"nodeEnv": {
"value":"development"
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/yyyyyyyy-xxxx-xxxx-xxxx-yyyyyyyy/resourceGroups/my-vault-res-group/providers/Microsoft.KeyVault/vaults/my-keyvault"
},
"secretName": "adminPassword"
}
}
}
}
adminPassword值将从具有特定id的指定KeyVault中获取。但是,我必须对“id”值进行硬编码。
根据此链接,我可以使用以下内容指定 id:
resourceId(subscription().subscriptionId, parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]
但是,当使用上述语法/资源函数时,我在使用VSTS发布和部署我的应用服务时收到错误(我使用Azure 资源组部署任务进行 APP 部署)。错误是这样的:
id 必须采用以下格式:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
不知道我做错了什么?
解决方案
你没有做错什么,这是故意的。您必须在参数文件中使用文字 resourceId(参数文件不允许函数使用)。
如果您有动态 KeyVault id 的方案,则可以使用嵌套部署:
推荐阅读
- powershell - 设置用户名和密码 VPN powershell
- python - 如何在 Numpy、python 中进行转换
- c++ - 如何从在 C++ 中使用自定义 QAbstractListModel 的 QListView 中获取所选项目
- google-apps-script - 添加多个联系人超出时间
- python - 如何以编程方式在 Python 中调用类成员函数?
- android - 如何在 Android Studio 中运行我的 Lint 自定义规则?
- java - 使用 Java 8 模式匹配将 Map 转换为 List
- reactjs - 在链接组件中反应提交表单按钮
- java - 如何使用 map 和 match 执行我的部分代码?
- javascript - 计算历史