リソースの 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'
}
}
次のステップ
- リソースを条件付きでデプロイするには、「Bicep の条件付きデプロイ」を参照してください。
- 既存のリソースの参照については、「Bicep での既存のリソース」をご覧ください。
- デプロイの順序がどのように決定されるのか知りたい場合は、「Bicep でのリソースの依存関係」をご覧ください。