问题在于
if
条件,因为它在二头肌代码中没有正确评估。
通常,如果
storageAccountName
参数在部署期间保留为空,则不会创建存储资源。如果
storageAccountName
参数在部署时不为空,即使在
secretAPIkey
单元
部署二头肌代码时,确保存储帐户名称不为空,即使它已提供给模块。
在使用与您使用的代码相同的代码提供存储帐户名称后,一切都按预期进行。
param storageAccountName string
secret.bicep:
param keyVaultName string = 'newvaultj'
param secretName string
@secure()
param secretValue string
@allowed([
'general'
'storage_conn_string'
])
param secretType string = 'general'
@description('For secretType = storage_*, this is how we will be passing storage name')
param storageAccountName string = 'xxxxx'
resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
name: keyVaultName
}
resource secret'Microsoft.KeyVault/vaults/secrets@2023-02-01' = if (secretType == 'general') {
parent: kv
name: secretName
properties: {
value: secretValue
}
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' existing = if (startsWith(secretType, 'storage_')) {
name: storageAccountName
}
resource secret_conn_string 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = if (secretType == 'storage_conn_string') {
parent: kv
name: secretName
properties: {
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
}
main.bicep:
@secure()
param secretValueAPIkey string = 'newapikey'
param keyVaultName string = 'newvaultj'
param storageAccountName string = 'xxxxx'
module secretStorageDataConnectionString 'secret.bicep' = {
name: 'secretStorageDataConnectionString'
params: {
keyVaultName: kv.name
secretType : 'storage_conn_string'
storageAccountName: storageAccount.name
secretName: 'secretStorageDataConnectionString'
secretValue: 'some-dummy-secret-value'
}
}
module secretAPIkey 'secret.bicep' = {
name: 'secretAPIkey'
params: {
keyVaultName: kv.name
secretType: 'general'
secretName: 'secretAPIkey'
secretValue: secretValueAPIkey
}
}
更新代码:
param secretValueAPIkey string = 'newapikey'
param keyVaultName string = 'newvaultj'
param storageAccountName string = 'jaxxxx9920'
param location string = resourceGroup().location
resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
name: keyVaultName
}
module storageAccount4data 'StorageAccount.bicep' = {
name: storageAccountName
params: {
location: location
storageAccountName: storageAccountName
}
}
module secretStorageDataConnectionString 'secret.bicep' = {
name: 'secretStorageDataConnectionString'
params: {
keyVaultName: kv.name
secretType : 'storage_conn_string'
storageAccountName: storageAccount4data.name
secretName: 'secretStorageDataConnectionString'
secretValue: 'some-dummy-secret-value' //passing dummy value, we will retrieve it in via the module
}
}
module secretAPIkey 'secret.bicep' = {
name: 'secretAPIkey'
params: {
keyVaultName: kv.name
secretType: 'general'
secretName: 'secretAPIkey'
secretValue: secretValueAPIkey
}
}
部署成功: