演習 - 子リソースの定義

完了

Note

初めてサンドボックスをアクティブ化して利用規約に同意すると、Microsoft アカウントが Microsoft Learn Sandbox という名前の新しい Azure ディレクトリに関連付けられます。 また、コンシェルジェ サブスクリプションという名前の特殊なサブスクリプションにも追加されます。

あなたは、R&D チームの要求に取り組み始めており、おもちゃのドローンのテスト データ用に Azure Cosmos DB データベースを構築することから始めることにしました。 この演習では、Azure Cosmos DB アカウントと 2 つの子リソースを (1 つは parent プロパティを使用して、もう 1 つは入れ子になったリソースとして) 作成します。

その過程で、以下のことを行います。

  • Cosmos DB アカウントをデプロイする Bicep ファイルを作成します。
  • データベースとコンテナーを追加します。これらは Cosmos DB アカウントの子リソースです。
  • テンプレートをデプロイし、そのデプロイを確認します。

この演習では、Visual Studio Code 用の Bicep 拡張機能を使用します。 この拡張機能を Visual Studio Code にインストールしてください。

Azure Cosmos DB アカウントを含む Bicep テンプレートを作成する

まず、Azure Cosmos DB アカウントを使用して新しい Bicep テンプレートを作成します。 そのためには次を行います。

  1. Visual Studio Code を開きます。

  2. main.bicep という名前の新しいファイルを作成します。

  3. Visual Studio Code によって Bicep ツールが読み込まれるように、空のファイルを保存します。

    [ファイル]>[名前を付けて保存] を選択するか、Windows の場合は Ctrl + S (macOS の場合は ⌘ + S) を選択できます。 ファイルの保存場所を忘れないようにしてください。 たとえば、保存場所として、scripts フォルダーを作成することをお勧めします。

  4. 次のコンテンツをファイルに追加します。 コピーして貼り付けるのではなく、手動で入力することをお勧めします。 こうすることで、ツールが Bicep ファイルの作成にどのように役立つかを確認できます。

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param location string = resourceGroup().location
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    

    ヒント

    Bicep では、改行を挿入する場所については厳密であるため、ここに示されている場所にのみ改行を追加してください。

    この Bicep テンプレートは、次のセクションで基礎となる親リソースである Azure Cosmos DB アカウントをデプロイします。

  5. 変更をファイルに保存します。

データベースを追加する

次に、Azure Cosmos DB アカウントの子リソースであるデータベースを作成します。

  1. ファイルの先頭にある 2 つの既存のパラメーターの間に、次のパラメーターを追加します。

    param cosmosDBDatabaseThroughput int = 400
    
  2. パラメーター宣言の下に、次の変数を追加します。

    var cosmosDBDatabaseName = 'FlightTests'
    
  3. ファイルの下部にある、Azure Cosmos DB アカウントのリソース定義の下に次のリソース定義を追加します。

    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    }
    

    このコードでは、parent プロパティを使用して、子リソースであるデータベースがデプロイされます。 また、コードでは、完全修飾のリソースの種類を使用し、API バージョンを明示的に指定していることにも注意してください。

  4. 変更をファイルに保存します。

コンテナーの追加

次に、別の子リソースを追加します。 今回は、parent プロパティを使用するのではなく、入れ子になったリソースとしてこれを追加します。

  1. ファイルの上部近くにある cosmosDBDatabaseName 変数定義の下に、次の変数を追加します。

    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
  2. ファイルの下部近くにあるデータベース リソース定義内で、右中かっこ (}) の前に、次の入れ子になったリソース定義を追加します。

    resource container 'containers' = {
      name: cosmosDBContainerName
      properties: {
        resource: {
          id: cosmosDBContainerName
          partitionKey: {
            kind: 'Hash'
            paths: [
              cosmosDBContainerPartitionKey
            ]
          }
        }
        options: {}
      }
    }
    

    Bicep はこれが親リソースの種類に属することを認識するので、短いリソースの種類 (containers) を使用したことに注意してください。 Bicep では、完全修飾リソースの種類は Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers である必要があります。 API バージョンを指定しなかったため、Bicep は親リソースのバージョンである 2020-04-01 を使用します。

    完成後の完全な Bicep テンプレートは次の例のようになるはずです。

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param cosmosDBDatabaseThroughput int = 400
    param location string = resourceGroup().location
    
    var cosmosDBDatabaseName = 'FlightTests'
    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    
    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    
      resource container 'containers' = {
        name: cosmosDBContainerName
        properties: {
          resource: {
            id: cosmosDBContainerName
            partitionKey: {
              kind: 'Hash'
              paths: [
                cosmosDBContainerPartitionKey
              ]
            }
          }
          options: {}
        }
      }
    }
    
  3. 変更をファイルに保存します。

テンプレートを Azure にデプロイする

このテンプレートを Azure にデプロイするには、Visual Studio Code ターミナルから Azure アカウントにサインインする必要があります。 Azure CLI がインストールされていることを確認し、サンドボックスのアクティブ化に使用したのと同じアカウントでサインインします。

  1. [ターミナル] メニューで、[新しいターミナル] を選択します。 通常、ターミナル ウィンドウは画面の下半分に表示されます。

  2. ターミナル ウィンドウの右側に表示されるシェルが Bash の場合、正しいシェルが開いているので、次のセクションに進むことができます。

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Bash 以外のシェルが表示された場合は、シェルのドロップダウン矢印を選択し、[Git Bash] を選びます。

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. ターミナル シェルの一覧で、Bash を選択します。

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. ターミナルで、テンプレートを保存したディレクトリに移動します。 たとえば、それをテンプレート フォルダーに保存した場合、次のコマンドを使用します。

    cd templates
    

Bicep をインストールする

次のコマンドを実行して、最新バージョンの Bicep がインストールされていることを確認します。

az bicep install && az bicep upgrade

Azure へのサインイン

  1. Visual Studio Code ターミナルで、次のコマンドを実行して Azure にサインインします。

    az login
    
  2. 開いたブラウザーで、Azure アカウントにサインインします。

    Visual Studio Code ターミナルには、このアカウントに関連付けられているサブスクリプションの一覧が表示されます。

  3. このセッションで実行するすべての Azure CLI コマンドに対して、既定のサブスクリプションを設定します。

    az account set --subscription "Concierge Subscription"
    

    注意

    最近、複数のサンドボックスを使用した場合、ターミナルに、"コンシェルジェ サブスクリプション" の複数のインスタンスが表示される場合があります。 その場合は、次の 2 つのステップを使用して、1 つを既定のサブスクリプションとして設定します。 上記のコマンドが正常に実行され、1 つの "コンシェルジェ サブスクリプション" のみがリストされたら、次の 2 つのステップをスキップします。

  4. コンシェルジェ サブスクリプションの ID を取得します。

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. サブスクリプション ID を使用して、既定のサブスクリプションを設定します。 {your subscription ID} を最新のコンシェルジェ サブスクリプション ID に置き換えます。

    az account set --subscription {your subscription ID}
    

既定のリソース グループを設定する

Azure CLI を使用する場合は、既定のリソース グループを設定し、この演習の残りの Azure CLI コマンドでパラメーターを省略できます。 サンドボックス環境で自分用に作成されたリソース グループに、既定値を設定します。

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

テンプレートを Azure にデプロイする

Visual Studio Code のターミナルから次のコードを実行して、Bicep テンプレートを Azure にデプロイします。 この操作が完了して、デプロイが成功したことがわかるまで 1、2 分かかる可能性があります。

az deployment group create --template-file main.bicep

このテンプレートを Azure にデプロイするには、Visual Studio Code ターミナルから Azure アカウントにサインインします。 Azure PowerShell をインストールしたことを確認し、サンドボックスをアクティブ化したのと同じアカウントにサインインします。

  1. [ターミナル] メニューで、[新しいターミナル] を選択します。 通常、ターミナル ウィンドウは画面の下半分に表示されます。

  2. ターミナル ウィンドウの右側に表示されるシェルが powershell または pwsh の場合、正しいシェルが開いているので、次のセクションに進むことができます。

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. Powershell または pwsh 以外のシェルが表示された場合は、シェルのドロップダウン矢印を選択し、[PowerShell] を選びます。

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. ターミナル シェルの一覧で、Powershell または pwsh を選択します。

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. ターミナルで、テンプレートを保存したディレクトリに移動します。 たとえば、それをテンプレート フォルダーに保存した場合、次のコマンドを使用します。

    Set-Location -Path templates
    

Bicep CLI のインストール

Azure PowerShell で Bicep を使用するには、Bicep CLI をインストールします。

Azure PowerShell を使用して Azure にサインインする

  1. Visual Studio Code ターミナルで、次のコマンドを実行します。

    Connect-AzAccount
    

    ブラウザーが開き、Azure アカウントにサインインできるようになります。

  2. Azure にサインインすると、ターミナルに、このアカウントに関連付けられているサブスクリプションの一覧が表示されます。

    サンドボックスをアクティブにした場合は、"コンシェルジェ サブスクリプション" という名前のサブスクリプションが表示されます。 演習の残りの部分では、これを使用します。

  3. このセッションで実行するすべての Azure PowerShell コマンドについて既定のサブスクリプションを設定します。

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    注意

    最近、複数のサンドボックスを使用した場合、ターミナルに、"コンシェルジェ サブスクリプション" の複数のインスタンスが表示される場合があります。 その場合は、次の 2 つのステップを使用して、1 つを既定のサブスクリプションとして設定します。 上記のコマンドが正常に実行され、1 つの "コンシェルジェ サブスクリプション" のみがリストされたら、次の 2 つのステップをスキップします。

  4. サブスクリプション ID を取得します。 次のコマンドを実行すると、ご使用のサブスクリプションとその ID が一覧表示されます。 Concierge Subscription を探して、2 番目の列から ID をコピーします。 これは、cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0 のように表示されます。

    Get-AzSubscription
    
  5. アクティブなサブスクリプションを "コンシェルジェ サブスクリプション" に変更します。 必ず、"{ご使用のサブスクリプションの ID}" を、コピーした ID に置き換えてください。

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

既定のリソース グループを設定する

この演習では、既定のリソース グループを設定し、残りの Azure PowerShell コマンドからパラメーターを省略できます。 サンドボックス環境で自分用に作成されたリソース グループに、この既定値を設定します。

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

テンプレートを Azure にデプロイする

ターミナルで、以下の Azure PowerShell コマンドを使用して Azure にテンプレートをデプロイします。 この操作が完了して、デプロイが成功したことがわかるまで 1、2 分かかる可能性があります。

New-AzResourceGroupDeployment -TemplateFile main.bicep

デプロイを検証する

  1. Azure portal にアクセスして、サンドボックス サブスクリプション内にいることを確認します。

    1. それには、ページの右上隅にある自分のアバターを選択します。

    2. [ディレクトリの切り替え] を選択します。 リストで、[Microsoft Learn サンドボックス] ディレクトリを選択します。

  2. ホーム ページで、[リソース グループ] を選択します。 [リソース グループ] ウィンドウが表示されます。

  3. [サンドボックス リソース グループ名] を選択します。

  4. [概要] に、1 つのデプロイが成功したことが表示されます。

    Screenshot of the Azure portal interface for the resource group overview, with the deployments section showing that one succeeded.

  5. [1 Succeeded] (1 件の成功) を選択して、デプロイの詳細を確認します。

    Screenshot of the Azure portal interface for the deployments, with the one deployment listed and a succeeded status.

  6. main というデプロイを選択して、デプロイされているリソースを確認し、次に [デプロイの詳細] を選択して展開します。 この例では、Cosmos DB アカウント、データベース、およびコンテナーが一覧表示されています。

    Screenshot of the Azure portal interface for the specific deployment, with three Cosmos DB resources listed.

  7. 後でデプロイをもう一度確認できるように、ブラウザーでページを開いたままにしておきます。