分享方式:


Bicep 中的資源宣告

本文說明可用來將資源新增至 Bicep 檔案的語法。 Bicep 檔案中的資源限制為800個。 如需詳細資訊,請參閱範本限制

定義資源

使用 resource 關鍵字加入資源宣告。 您可以設定資源的符號名稱。 符號名稱與資源名稱不同。 您可以使用符號名稱參考 Bicep 檔案中其他部分的資源。

@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

因此,儲存體帳戶的宣告開頭可以是:

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  ...
}

符號名稱須區分大小寫。 名稱中可以包含字母、數字和底線 (_)。 開頭不能為數字。 資源的名稱不能與參數、變數或模組相同。

如需可用的資源類型和版本,請參閱 Bicep 資源參考。 Bicep 不支援 Azure Resource Manager 範本 (ARM 範本) JSON 提供的 apiProfile。 您也可以定義 Bicep 擴充性提供者資源。 如需詳細資訊,請參閱 Bicep 擴充性 Kubernetes 提供者 (部分機器翻譯)。

若要有條件地部署資源,請使用 if 語法。 如需詳細資訊,請參閱 Bicep 中的條件式部署

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

若要部署一個以上的資源執行個體,請使用 for 語法。 您可以使用 batchSize 裝飾項目來指定要以序列或平行的方式部署執行個體。 如需詳細資訊,請參閱 Bicep 中的反覆式迴圈

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

您也可以在資源屬性上使用 for 語法來建立陣列。

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

使用裝飾專案

裝飾專案是以 格式 @expression 撰寫,並置於資源宣告上方。 下表顯示資源的可用裝飾專案。

裝飾項目 Argument 描述
batchSize none 設定實例以循序部署。
description 字串 提供資源的描述。

裝飾項目在 sys 命名空間中。 如果您需要區別裝飾項目與具有相同名稱的另一個項目,請在裝飾項目前面加上 sys。 例如,如果您的 Bicep 檔案包含名稱為 description 的參數,則在使用描述裝飾項目時,您必須加入 sys 命名空間。

BatchSize

您只能套用 @batchSize() 至使用 for 表示式的資源或模組定義。

依預設,資源以平行方式部署。 新增 batchSize(int) 裝飾項目時,請依序部署實例。

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

如需詳細資訊,請參閱分批部署

描述

若要新增說明,請將描述新增至資源宣告。 例如:

@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Markdown 格式的文字可用於描述文字。

資源名稱

每個資源都有名稱。 設定資源名稱時,請注意資源名稱的規則和限制

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  ...
}

一般來說,您會將名稱設為參數,以便在部署期間傳入不同的值。

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  ...
}

資源位置

許多資源都需要位置。 您可以透過 IntelliSense 或範本參考,判斷資源是否需要位置。 下列範例會新增用於儲存體帳戶的位置參數。

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

一般來說,您會將位置設為參數,以便部署到不同的位置。

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: location
  ...
}

不同的位置支援不同的資源類型。 若要取得 Azure 服務的支援位置,請參閱依區域提供的產品。 若要取得資源類型支援的位置,請使用 Azure PowerShell 或 Azure CLI。

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

資源標籤

您可以在部署期間將標記套用至資源。 標記可協助您以邏輯方式組織已部署的資源。 如需以不同方式指定標記的範例,請參閱 ARM 範本標記

資源的受控識別

有些資源可支援 Azure 資源受控識別。 這些資源在資源宣告的根層級具有身分識別物件。

您可以使用系統指派或使用者指派的身分識別。

下列範例說明如何為 Azure Kubernetes Service 叢集設定系統指派的身分識別。

resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

下一個範例說明如何為虛擬機器設定使用者指派的身分識別。

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

資源專屬屬性

上述屬性對大部分的資源類型來說為泛型。 設定這些值之後,您需為要部署的資源類型設定專屬的屬性。

使用 IntelliSense 或 Bicep 資源參考,判斷哪些屬性可供使用,以及哪些屬性是必要的。 下列範例會設定儲存體帳戶的其餘屬性。

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

下一步