簡體   English   中英

Azure 二頭肌依賴於現有資源

[英]Azure bicep dependsOn for existing resource

從我的“主”二頭肌模塊中,我想引用一個現有的 function,它是由從同一“主”二頭肌調用的模塊創建的。 所以使用了以下代碼:

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

然后,我可以使用“functionApp”資源變量中的屬性來獲取 function 密鑰並將其存儲為密鑰庫機密,如下所示:

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

但是,當我運行資源組部署並看到以下錯誤時:

找不到資源組“rg-365response-int-001”下的資源“Microsoft.Web/sites/func-365response-int-001”

這是某種時間問題,我想它是在調用創建它的模塊之前檢查 function 應用程序有機會完成。

如果我第二次運行“主”二頭肌模塊,一切正常。

似乎不可能對“現有”資源使用“dependsOn”語法。

有替代方案嗎?

我認為您是正確的,因為 listKeys() 調用得太早了,不幸的是,您無法使用 dependsOn 修復它。 這里有更多解釋: https://bmoore-msft.blog/2020/07/26/resource-not-found-dependson-is-not-working/

解決這個問題的唯一方法是將 listKeys 和 function 放入不同的模塊中,如果第二個模塊不使用第一個模塊的輸入,請確保您有 dependsOs。

對我來說沒有加起來的部分是您在上面的示例中的資源上有一個existing關鍵字,但您說您正在創建它。 您描述的症狀還表明您正在同一部署中創建它。 如果你是,他們你不需要'existing'關鍵字。

如果一切都失敗了 - 發布所有代碼。

DependOns只能用於在同一個二頭肌文件(ARM 模板)中定義的資源。
當您使用existing關鍵字時,它將被 Bicep 編譯為resourceId() or reference()

您可以創建一個模塊來創建秘密:

// key-vault-secret.bicep

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

resource kvSecret 'Microsoft.KeyVault/vaults/secrets@2021-04-01-preview' = {
  name: '${kvName}/${secretName}'
  properties: {
    value: secretValue
  }
}

然后從您創建 function 的位置,您可以像這樣調用它:

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
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM