定義資源

已完成

Bicep 範本是您撰寫的檔案,可定義要部署的 Azure 資源。

您任職的玩具公司需要您為產品的推出建立可重複使用的 Bicep 範本。 該範本需要部署 Azure 儲存體帳戶和 Azure App Service 資源,以便能在每個新產品的推出期間進行行銷。

在此單元中,您將了解如何在 Bicep 範本中定義資源、資源名稱的運作方式,以及如何建立彼此相關的資源。

注意

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

定義資源

Bicep 範本的主要用途是定義您的 Azure 資源。 以下舉例說明典型的資源定義在 Bicep 中的樣貌。 此範例會建立名為 toylaunchstorage 的儲存體帳戶。

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'toylaunchstorage'
  location: 'westus3'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

讓我們仔細看看此資源定義的一些重要部分:

  • 開頭的 resource 關鍵字會告訴 Bicep 您即將定義資源。

  • 接下來,您要為資源提供符號名稱。 在此範例中,資源的符號名稱是 storageAccount。 在 Bicep 中,符號名稱會用來參照資源,但不會顯示在 Azure 中。

  • Microsoft.Storage/storageAccounts@2022-09-01 是資源的資源類型API 版本Microsoft.Storage/storageAccounts 會告訴 Bicep 您要宣告 Azure 儲存體帳戶。 日期 2022-09-01 是 Bicep 在建立資源時所使用的 Azure 儲存體 API 版本。

    提示

    適用於 Visual Studio Code 的 Bicep 擴充功能 (英文) 可協助您尋找您所建立之資源的資源類型和 API 版本。 如果您熟悉 ARM 範本,請注意 API 版本也會與您在該處使用的版本相符。

  • 您必須宣告資源名稱,這是會在 Azure 中指派給儲存體帳戶的名稱。 您將使用 name 關鍵字來設定資源名稱。

    重要

    符號名稱只會用於 Bicep 範本,且不會出現在 Azure 中。 資源名稱出現在 Azure 中。

  • 然後,您會設定資源的其他詳細資料,例如其位置、SKU (定價層) 和種類。 您還可以定義其他屬性,但每個資源類型的屬性各不相同。 不同的 API 版本也可能會引進不同的屬性。 在此範例中,我們要將儲存體帳戶的存取層設定為 Hot

提示

資源名稱通常有一些必須遵循的規則,例如最大長度、允許的字元,以及所有 Azure 的唯一性。 每個 Azure 資源類型的資源名稱需求都不同。 請務必先了解命名限制和需求,再將名稱新增至範本中。

當資源彼此相依時,會發生什麼情況?

Bicep 範本通常包含數個資源。 您往往需要讓某個資源相依於另一個資源。 您可能必須從某個資源中擷取某些資訊,才能定義其他資源。 或者,如果您要部署 Web 應用程式,則必須先建立伺服器基礎結構,才能將應用程式新增至其中。 這些關聯性稱為相依性

您必須為範本部署 App Service 應用程式,以協助啟動玩具產品,但若要建立 App Service 應用程式,您必須先建立 App Service 方案。 App Service 方案代表「伺服器裝載」資源,其宣告方式如此範例所示:

resource appServicePlan 'Microsoft.Web/serverFarms@2023-12-01' = {
  name: 'toy-product-launch-plan'
  location: 'westus3'
  sku: {
    name: 'F1'
  }
}

此資源定義會向 Bicep 指出您想要部署資源類型為 Microsoft.Web/serverFarms 的 App Service 方案。 方案資源名為 toy-product-launch-plan,並且會部署至美國西部 3 區域。 它會使用 F1 的定價 SKU,這是 App Service 的免費層。

現在您已完成 App Service 方案的宣告,下一步是宣告應用程式:

resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
  name: 'toy-product-launch-1'
  location: 'westus3'
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

此範本會指示 Azure 將應用程式裝載在您所建立的方案上。 請注意,方案的定義包含此行上的 App Service 方案符號名稱:serverFarmId: appServicePlan.id。 這一行表示 Bicep 將會使用 id 屬性來取得 App Service 方案的「資源識別碼」。 其意義實際上等於:「此應用程式的伺服器陣列識別碼是之前定義的 App Service 方案識別碼」

提示

在 Azure 中,資源識別碼是每個資源的唯一識別碼。 資源識別碼包含 Azure 訂用帳戶識別碼、資源群組名稱和資源名稱,以及一些其他資訊。

藉由使用參照方案符號名稱的屬性來宣告應用程式資源,Azure 會了解 App Service 應用程式與方案之間的隱含相依性。 當部署資源時,Azure 會先確定它已完整部署方案,再開始部署應用程式。