次の方法で共有


リソースの 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 の形式で記述され、リソース宣言の上に配置されます。 次の表に、リソースで使用できるデコレーターを示します。

デコレーター 引数 説明
batchSize なし 順番にデプロイするようにインスタンスを設定します。
説明 string リソースの説明を指定します。

デコレーターは、sys 名前空間にあります。 このデコレーターを同じ名前の別の項目と区別する必要がある場合は、デコレータの前に「sys」を付けます。 たとえば、Bicep ファイルに description という名前のパラメーターが含まれている場合、description デコレーターを使用するときに、sys 名前空間を追加する必要があります。

BatchSize

@batchSize() は、forを使用するリソースまたはモジュールの定義だけに適用できます。

既定では、リソースは並列でデプロイされます。 batchSize(int) デコレーターを追加する場合、インスタンスを順次にデプロイします。

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

詳細については、「バッチでのデプロイ」を参照してください。

説明

説明を追加するには、リソースの宣言に description を追加します。 次に例を示します。

@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 またはテンプレート参照を使用して判断できます。 次の例では、ストレージ アカウントに使用される location パラメーターを追加しています。

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 テンプレートのタグに関する記事を参照してください。

リソースのマネージド ID

一部のリソースでは、Azure リソースのマネージド ID がサポートされます。 これらのリソースには、リソース宣言のルート レベルに ID オブジェクトがあります。

システム割り当てまたはユーザー割り当ての ID を使用できます。

次の例は、Azure Kubernetes Service クラスターのシステム割り当て ID を構成する方法を示しています。

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

次の例は、仮想マシンのユーザー割り当て ID を構成する方法を示しています。

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

次のステップ