定義延伸模組資源

已完成

延伸模組資源一律會附加至其他 Azure 資源。 其可利用額外的功能來擴充這些資源的行為。

常見延伸模組資源的一些範例如下:

名稱 資源類型
角色指派 Microsoft.Authorization/roleAssignments
原則指派 Microsoft.Authorization/policyAssignments
鎖定 Microsoft.Authorization/locks
診斷設定 Microsoft.Insights/diagnosticSettings

例如,假設有一個鎖定,可用來防止刪除或修改 Azure 資源。 部署鎖定本身並不合理。 一律必須部署至另一個資源。

注意

本單元中的命令僅用於示範概念。 請先不要執行命令。 您很快就會在此練習所學到的內容。

如何定義延伸模組資源?

在 Bicep 中,您定義的延伸模組資源與一般資源的方式大致相同。 不過,您可以新增 scope 屬性,告訴 Bicep 資源應該附加至 Bicep 檔案中其他地方定義的另一個資源。 您可以使用資源的符號名稱來加以參考。 例如,以下是我們先前建立的 Azure Cosmos DB 帳戶定義:

resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
  name: cosmosDBAccountName
  location: location
  properties: {
    // ...
  }
}

讓我們新增資源鎖定,以防止任何人刪除 Azure Cosmos DB 帳戶:

resource lockResource 'Microsoft.Authorization/locks@2020-05-01' = {
  scope: cosmosDBAccount
  name: 'DontDelete'
  properties: {
    level: 'CanNotDelete'
    notes: 'Prevents deletion of the toy data Cosmos DB account.'
  }
}

請注意,此範例使用 scope 屬性搭配 Azure Cosmos DB 帳戶的符號名稱。 此屬性設定會告知 Bicep 將資源鎖定部署至 Azure Cosmos DB 帳戶,這表示無法再刪除它。

延伸模組資源識別碼

延伸模組資源的識別碼與其他資源稍有不同。 其是由其父資源識別碼、分隔符號 /providers/ 和延伸模組資源識別碼所組成。

假設您已部署先前提及的 Azure Cosmos DB 帳戶,且該帳戶名為 toyrnd。 鎖定的資源識別碼如下所示:

/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete

以下是視覺標記法:

Extension resource ID for a resource lock applied to an Azure Cosmos DB account, split with the key-value pair on a separate line.

如果您看到以一般資源識別碼開頭並新增 /providers/ 和其他資源類型與名稱的資源識別碼,表示您正在查看延伸模組資源識別碼。