You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bicep中获取Key Vault密钥作为Synapse Workspace创建输入

错误原因

getSecret() 函数仅支持对Bicep中声明的资源类型对象调用,你当前是对Key Vault模块的返回对象调用该函数,所以触发类型不匹配报错。

替代实现方案

方案1:通过existing关键字引用已创建的Key Vault资源后调用getSecret

  1. 首先修改你的modules/keyVault.bicep模块,在末尾新增输出,暴露Key Vault的名称和资源ID:
// modules/keyVault.bicep 末尾添加如下代码
output keyVaultName string = keyVault.name
output keyVaultId string = keyVault.id
  1. 在主Bicep文件的Key Vault模块定义后,声明已存在的Key Vault资源对象:
// 主文件中keyVault模块定义完成后添加
resource existingKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: keyVault.outputs.keyVaultName
  scope: resourceGroup()
}
  1. 替换synapse模块中密码参数的赋值逻辑,使用新声明的existingKeyVault对象调用getSecret,入参为你存储的密钥名称:
synapseSqlAdministratorLoginPassword: existingKeyVault.getSecret('synapseSQLAdministratorLoginPassword')

注意:需要提前在Key Vault的访问配置中开启「允许Azure资源管理器访问以获取机密」,同时部署使用的身份需要有该密钥的get权限。

方案2:直接构造密钥的资源ID传入(更简洁)

Bicep会自动识别Key Vault密钥的资源ID为安全参数,无需明文传递,也不需要额外声明资源对象,直接替换参数赋值即可:

synapseSqlAdministratorLoginPassword: resourceId('Microsoft.KeyVault/vaults/secrets', keyVault.outputs.keyVaultName, 'synapseSQLAdministratorLoginPassword')

额外优化建议

你当前定义的keyVaultSecret模块中,keyVaultSecretName参数无实际使用价值,可以直接删除。


内容的提问来源于stack exchange,提问作者caroline101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:48:03