gpt4 book ai didi

Azure 二头肌依赖于现有资源

转载 作者:行者123 更新时间:2023-12-03 06:54:20 26 4
gpt4 key购买 nike

从我的“主”二头肌模块中,我想引用由同一“主”二头肌调用的模块创建的现有函数。因此使用了以下代码:

resource functionApp 'Microsoft.Web/sites@2021-02-01' existing = {
name: functionAppName
scope: resourceGroup(subscriptionId, 'rg-365response-${env}-001')
}

然后,我可以使用“functionApp”资源变量中的属性来获取功能 key 并将其存储为 key 保管库 secret ,如下所示:

resource funcSecret 'Microsoft.KeyVault/vaults/secrets@2021-04-01-preview' = {
name: '${kvName}/funcAppKey'
properties: {
value: listKeys('${functionApp.id}/host/default', functionApp.apiVersion).functionKeys.default
}
}

但是,当我运行资源组部署时,看到以下错误:

The Resource 'Microsoft.Web/sites/func-365response-int-001' underresource group 'rg-365response-int-001' was not found

这是某种计时问题,我猜它是在调用创建函数应用程序的模块有机会完成之前检查函数应用程序。

如果我第二次运行“主”二头肌模块,一切正常。

似乎无法对“现有”资源使用“dependsOn”语法。

还有其他选择吗?

最佳答案

DependOns 只能用于同一二头肌文件(ARM 模板)中定义的资源。
当您使用existing关键字时,它会被Bicep编译为resourceId()或reference()

您可以创建一个模块来创建 secret :

// key-vault-secret.bicep

param kvName string
param secretName string
@secure()
param secretValue string

resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
name: kvName
}

resource kvSecret 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = {
name: secretName
parent: kv
properties: {
value: secretValue
}
}

然后从您创建函数的位置,您可以像这样调用它:

resource functionApp 'Microsoft.Web/sites@2021-03-01' = {
name: functionAppName
location: location
kind: 'functionapp'
...
}

// Add secret to KV
module functionKey 'key-vault-secret.bicep' = {
name: 'function-default-host-key'
scope: resourceGroup()
params:{
kvName: kvName
secretName: 'funcAppKey'
secretValue: listKeys('${functionApp.id}/host/default', functionApp.apiVersion).functionKeys.default
}
}

关于Azure 二头肌依赖于现有资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73216972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com