リソースの定義

完了

デプロイする Azure リソースを定義するファイルである Bicep テンプレートを作成します。

玩具の会社は、製品の立ち上げのために再利用可能な Bicep テンプレートを作成する必要があります。 このテンプレートでは、Azure ストレージ アカウントと Azure App Service リソースをデプロイする必要があります。これは、立ち上げ中に新しい各製品のマーケティングに使用されます。

このユニットでは、Bicep テンプレートでリソースを定義する方法、リソース名のしくみ、相互に関連するリソースを作成する方法について説明します。

注意

このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。

リソースを定義する

Bicep テンプレートを使用する主な目的は、Azure リソースを定義することです。 Bicep の一般的なリソース定義の例を次に示します。 この例では、toylaunchstorage という名前のストレージ アカウントを作成します。

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'toylaunchstorage'
  location: 'westus3'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

このリソース定義の重要な部分について詳しく見てみましょう。

  • 開始時のresourceキーワードは、リソースを定義しようとしていることを Bicep に指示します。

  • 次に、リソースに シンボリック名を指定します。 例では、リソースのシンボリック名はstorageAccountです。 Bicep 内では、リソースを参照するためにシンボリック名が使用されますが、Azure には表示されません。

  • Microsoft.Storage/storageAccounts@2022-09-01 は、リソースの種類 とリソースの API バージョンです。 Microsoft.Storage/storageAccounts は、Azure ストレージ アカウントを宣言していることを Bicep に通知します。 日付 2022-09-01 は、Bicep がリソースを作成するときに使用する Azure Storage API のバージョンです。

    ヒント

    Visual Studio Code 用 Bicep 拡張機能は、作成するリソースのリソースの種類と API バージョンを見つけるのに役立ちます。 ARM テンプレートに精通している場合は、API バージョンが使用しているバージョンと一致することに注意してください。

  • リソース名を宣言する必要があります。これは、ストレージ アカウントが Azure に割り当てられる名前です。 name キーワードを使用して、リソース名を設定します。

    重要

    シンボル名は Bicep テンプレート内でのみ使用され、Azure には表示されません。 リソース名 Azure に表示されます。

  • その後、リソースの場所、SKU (価格レベル)、種類など、リソースのその他の詳細を設定します。 定義できるプロパティもあります。これは、リソースの種類ごとに異なります。 API バージョンによって、異なるプロパティが導入される場合もあります。 この例では、ストレージ アカウントのアクセス レベルを Hot に設定しています。

ヒント

多くの場合、リソース名には、最大長、許容される文字数、すべての Azure でにおける一意性など、従う必要がある規則があります。 リソース名の要件は、Azure リソースの種類によって異なります。 テンプレートに追加する前に、名前付けの制限と要件について理解しておいてください。

リソースが相互に依存している場合はどうなりますか?

Bicep テンプレートには、通常、いくつかのリソースが含まれています。 多くの場合、リソースは別のリソースに依存する必要があります。 あるリソースから別のリソースを定義できるように、いくつかの情報を抽出しなければならない場合があります。 または、Web アプリケーションを配置する場合は、アプリケーションを追加する前に、サーバー インフラストラクチャを作成する必要があります。 これらのリレーションシップを 依存関係と呼びます。

玩具製品の立ち上げに役立つテンプレートの App Service アプリをデプロイする必要がありますが、App Service アプリを作成するには、まず App Service プランを作成する必要があります。 App Service プランはサーバーホスティング リソースを表し、次の例のように宣言されています。

resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = {
  name: 'toy-product-launch-plan'
  location: 'westus3'
  sku: {
    name: 'F1'
  }
}

このリソース定義により、リソースの種類 Microsoft.Web/serverFarms を持つ App Service プランをデプロイすることが Bicep に指示されます。 プラン リソースには toy-product-launch-plan という名前が付けられ、米国西部 3 リージョンにデプロイされます。 これには、App Service の free レベルである F1 の価格 SKU を使います。

App Service プランを宣言したので、次の手順ではアプリを宣言します。

resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
  name: 'toy-product-launch-1'
  location: 'westus3'
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

このテンプレートは、作成したプランでアプリをホストするように Azure に指示します。 プランの定義には、この行に App Service プランのシンボル名が含まれていることに注意してください: serverFarmId: appServicePlan.id。 この行は、Bicep が id プロパティを使って App Service プランの "リソース ID" を取得することを意味します。 これは実質的に "このアプリのサーバー ファーム ID は先ほど定義した App Service プランの ID である" ということです。

ヒント

Azure では、リソース ID は各リソースの一意な識別子です。 リソース ID には、Azure サブスクリプション ID、リソース グループ名、リソース名、およびその他の情報が含まれます。

アプリ リソースとプランのシンボル名を参照するプロパティを宣言することで、Azure は App Service アプリとプランの間の 暗黙的な依存関係 を認識します。 リソースのデプロイ時には、アプリのデプロイが始まる前に、プランが完全にデプロイされることが Azure によって確認されます。