リソースの Bicep を使った宣言
この記事では、Bicep ファイルにリソースを追加するために使用する構文について説明します。 Bicep ファイルでは、リソースが 800 個に制限されます。 詳細については、「テンプレートの制限」を参照してください。
宣言
resource
キーワードを使用してリソース宣言を追加します。 リソースのシンボリック名を設定します。 シンボリック名はリソース名と同じものではありません。 シンボリック名は、Bicep ファイルの他の部分にあるリソースを参照するために使用します。
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>]
}
}
リソース名
各リソースには名前があります。 リソース名を設定する際には、リソース名の規則と制限事項に注意してください。
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 テンプレートのタグに関する記事を参照してください。
Azure リソースのマネージド 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 でのリソースの依存関係」をご覧ください。