クイック スタート: Visual Studio を使用して Bicep ファイルを作成する

このクイックスタートでは、Visual Studio で Bicep ファイルを作成する手順について説明します。 ストレージ アカウントと仮想ネットワークを作成します。 また、Bicep 拡張機能に備わっているタイプ セーフ、構文の検証、オートコンプリートによって、開発がどのように簡略化されるかについても説明します。

同様の作成エクスペリエンスは、Visual Studio Code でもサポートされています。 「クイックスタート: Visual Studio Code を使用して Bicep ファイルを作成する」を参照してください。

前提条件

リソース スニペットを追加する

Visual Studio を起動し、main.bicep という名前の新しいファイルを作成します。

Visual Studio と Bicep 拡張機能を使用すると、事前に定義されたスニペットが用意されているので、開発が簡単になります。 このクイックスタートでは、仮想ネットワークを作成するスニペットを追加します。

main.bicep に「vnet」と入力します。 リストから [res-vnet] を選び、[Tab] または [Enter] キーを押します。

仮想ネットワークのスニペットの追加を示すスクリーンショット。

ヒント

これらの IntelliSense オプションが Visual Studio に表示されない場合は、「前提条件」に記載されている Bicep 拡張機能をインストールしていることを確認してください。 この拡張機能をインストールしている場合は、Bicep ファイルを開いた後、Bicep 言語サービスが起動されるまで少し時間を置いてください。 通常はすぐに起動されますが、起動されるまでは IntelliSense オプションが表示されません。

これで、Bicep ファイルには次のコードが追加されました。

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: 'name'
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

このスニペットには、仮想ネットワークの定義に必要な値がすべて含まれています。 ただし、必要に応じてこのコードを変更することができます。 たとえば、name は仮想ネットワークに適した名前ではありません。 name プロパティを exampleVnet に変更します。

name: 'exampleVnet'

location に赤い波下線があることに注目してください。 これは問題があることを示しています。 location にカーソルを合わせます。 エラー メッセージは、名前 "location" は現在のコンテキストに存在しません] です。 次のセクションで location パラメーターを作成します。

パラメーターを追加する

ここで、ストレージ アカウント名と場所の 2 つのパラメーターを追加します。 ファイルの先頭に、次のように追加します。

param storageName

storageName の後にスペースを追加すると、そのパラメーターに使用できるデータ型が IntelliSense によって提案されることがわかります。 [string] を選択します。

パラメーターに文字列型を追加しているスクリーンショット。

次のようなパラメーターになります。

param storageName string

このパラメーターは問題なく機能しますが、ストレージ アカウントの名前には長さの制限があります。 名前は 3 文字以上、24 文字以下にする必要があります。 これらの要件を指定するには、パラメーターにデコレーターを追加します。

パラメーターの上に行を追加して、「 @ 」と入力します。 使用できるデコレータが表示されます。 minLengthmaxLength の両方のデコレータがあることに注目してください。

パラメーターにデコレーターを追加しているスクリーンショット。

両方のデコレーターを追加して、次のように文字数制限を指定します。

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

また、パラメーターの説明を追加することもできます。 Bicep ファイルをデプロイする担当者が、指定する値を理解するために役立つ情報を含めてください。

@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageName string

ストレージ アカウント名パラメーターは、使用できるようになりました。

もう 1 つの場所パラメーターを追加します。

param location string = resourceGroup().location

リソースの追加

ここでは、スニペットを使用してストレージ アカウントを定義するのではなく、IntelliSense を使用して値を設定します。 IntelliSense を使用すると、手動で値を入力するよりもはるかに簡単にこの手順を行うことができます。

リソースを定義するには、resource キーワードを使用します。 仮想ネットワークの下に「resource exampleStorage」と入力します。

resource exampleStorage

exampleStorage は、デプロイするリソースのシンボリック名です。 この名前は、Bicep ファイルの他の部分にあるリソースを参照するために使用できます。

シンボリック名の後にスペースを追加すると、リソースの種類の一覧が表示されます。 続けて「storage」と入力すると、使用できるオプションから選択できるようになります。

リソースの種類に対するストレージ アカウントを選んでいるスクリーンショット。

[Microsoft.Storage/storageAccounts] を選択すると、使用できる API バージョンが表示されます。 2021-09-01 または最新の API バージョンを選びます。 最新の API バージョンを使用することをお勧めします。

リソースの種類に対する API バージョンを選んでいるスクリーンショット。

リソースの種類の一重引用符の後に = とスペースを追加します。 リソースにプロパティを追加するためのオプションが表示されます。 [required-properties] を選択します。

必要なプロパティを追加しているスクリーンショット。

このオプションを選択すると、デプロイに必要なリソースの種類のすべてのプロパティが追加されます。 このオプションを選択すると、ストレージ アカウントに次のプロパティが追加されます。

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-09-01' = {
	name: 1
	location: 2
	sku: {
		name: 3
	}
	kind: 4
}

コード内には 4 つのプレースホルダーがあります。 [Tab] キーを使用してそれらに移動し、値を入力します。 ここでも IntelliSense が役立ちます。 namestorageName に設定します。これは、ストレージ アカウントの名前を含むパラメーターです。 location の場合は、location に設定します。 SKU の名前と種類を追加すると、IntelliSense によって有効なオプションが表示されます。

完了すると、次のようになります。

@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageName string
param location string = resourceGroup().location

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: storageName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-09-01' = {
  name: storageName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Bicep の構文の詳細については、Bicep の構造に関する記事を参照してください。

Bicep ファイルをデプロイする

Bicep ファイルのデプロイは、まだ Visual Studio から行うことはできません。 Azure CLI または Azure PowerShell を使用すれば、Bicep ファイルをデプロイできます。

az group create --name exampleRG --location eastus

az deployment group create --resource-group exampleRG --template-file main.bicep --parameters storageName=uniquename

デプロイが完了すると、デプロイが成功したことを示すメッセージが表示されます。

リソースをクリーンアップする

Azure リソースが不要になったら、Azure CLI か Azure PowerShell のどちらかのモジュールを使用してクイックスタート リソース グループを削除します。

az group delete --name exampleRG

次のステップ