使用Bicep创建Logic App服务总线API连接部署报错排查
问题背景
我正尝试使用Bicep创建面向Service Bus的Logic App API连接,初始编写的Bicep代码如下:
resource ServicebusApiCon 'Microsoft.Web/connections@2016-06-01' = { name: 'servicebus123' location: Location kind: 'V2' properties: { displayName: 'servicebus' api: { name: 'servicebus' id: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Web/locations/${Location}/managedApis/servicebus' type: 'Microsoft.Web/locations/managedApis' parameterValueSet: { name: 'managedIdentityAuth' values: { namespaceEndpoint: { value: 'https://servicebus.servicebus.windows.net:443/' } } } } } }
编写时参考了存储账户、Key Vault的托管身份认证参数配置,对应片段如下:
for storage account: parameterValueSet: { name: 'managedIdentityAuth' values: { accountName: 'storageaccountname' } } for keyvault: parameterValueSet: { name: 'managedIdentityAuth' values: { vaultName: 'keyvaultname' } }
执行部署操作时出现如下报错,需要确认现有代码是否存在配置缺失或错误,以及对应的修复方法:
{ "status":"Failed", "error":{ "code":"DeploymentFailed", "message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.", "details":[ { "code":"BadRequest", "message":{ "error": { "code": "InvalidRequestContent", "message": "The request content is not valid and could not be deserialized: 'Could not find member 'parameterValueSet' on object of type 'ManagedApiReference'. Path 'parameterValueSet', line 1, position 258.'" } } } ] } }
错误原因
配置层级写错:parameterValueSet不是properties.api(即类型为ManagedApiReference的api对象)的合法属性,该配置节点放置位置错误,导致Azure资源管理器无法解析请求内容,抛出反序列化错误。
修复方法
将parameterValueSet节点从properties.api路径下移动到properties根层级,与displayName、api节点保持平级即可。
修复后的Service Bus API连接Bicep代码如下:
resource ServicebusApiCon 'Microsoft.Web/connections@2016-06-01' = { name: 'servicebus123' location: Location kind: 'V2' properties: { displayName: 'servicebus' // 托管身份认证参数配置移至properties根层级 parameterValueSet: { name: 'managedIdentityAuth' values: { namespaceEndpoint: { value: 'https://servicebus.servicebus.windows.net:443/' } } } api: { name: 'servicebus' id: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Web/locations/${Location}/managedApis/servicebus' type: 'Microsoft.Web/locations/managedApis' } } }
其他服务的配置规则一致:
- 存储账户托管身份连接:
parameterValueSet放在properties根层级,values中传入accountName - Key Vault托管身份连接:
parameterValueSet放在properties根层级,values中传入vaultName
调整配置层级后重新执行部署即可解决该报错。
内容的提问来源于stack exchange,提问作者ramesh reddy
相关产品推荐
相关产品推荐

