Azure Resource Manager テンプレートの作成

完了

Azure Cosmos DB SQL NoSQL アカウント用のテンプレートの作成は、ポータルを使用して、または CLI で、最初から作成する場合とよく似ています。 特定のリレーションシップの順序で定義する 3 つの主要なリソースがあります。

空のテンプレート

Azure Resource Manager テンプレートは、根本的には、従わなければならない特定の構文を持つ JSON ファイルです。 デフォルトの最小限の空のテンプレートは、schema プロパティが https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# に設定され、contentVersion プロパティが 1.0.0.0 に設定され、空の resources 配列を持つ JSON ドキュメントです。 この例では、最小限の空のテンプレートを示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ]
}

注意

このテンプレートに配置するリソースはすべて resources 配列内の JSON オブジェクトになります。

アカウント リソース

定義する最初のリソースの種類は Microsoft.DocumentDB/databaseAccounts です。 これは、API に固有ではないアカウントを表します。 API が指定されていない場合は、NoSQL API アカウントと推論されます。

このリソースのオブジェクトには、少なくとも次のプロパティが含まれている必要があります。

  • name
  • location
  • properties.databaseAccountOfferType
  • properties.locations[].locationName

csmsarm というプレフィックスを持つ一意の名前を持ち、米国西部にデプロイされているアカウントの例を次に示します。

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "apiVersion": "2024-04-15",
  "name": "[concat('csmsarm', uniqueString(resourceGroup().id))]",
  "location": "[resourceGroup().location]",
  "properties": {
    "databaseAccountOfferType": "Standard",
    "locations": [
      {
        "locationName": "westus"
      }
    ]
  }
}

注意

locations 配列を使用して、複数の場所を定義できます。

データベース リソース

次のリソースの種類は Microsoft.DocumentDB/databaseAccounts/sqlDatabases で、このアカウントの子リソースです。 このリレーションシップは dependsOn プロパティを使用して定義されます。

このリソースのオブジェクトには、少なくとも次のプロパティが含まれている必要があります。

  • name
  • properties.resources.id

cosmicworks という名前のデータベースの例を次に示します。

{
  "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
  "apiVersion": "2024-04-15",
  "name": "[concat('csmsarm', uniqueString(resourceGroup().id), '/cosmicworks')]",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', concat('csmsarm', uniqueString(resourceGroup().id)))]"
  ],
  "properties": {
    "resource": {
      "id": "cosmicworks"
    }
  }
}

コンテナー リソース

データベース内では、複数の子 Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers リソースを定義できます。 ここでは、スループットの割り当て、インデックス作成ポリシーの構成、パーティション キー パスの設定を行います。

コンテナー オブジェクトには、少なくとも次のプロパティが含まれている必要があります。

  • name
  • properties.resource.id
  • properties.resource.partitionkey.paths[]

コンテナーには、必要に応じて次のプロパティを含めることもできます。

  • properties.options.throughput
  • properties.options.autoscaleSettings.maxThroughput
  • properties.resource.indexingPolicy

次に示すのは、products という名前で、1000 RU/s の自動スケーリングと、/categoryId というパーティション キー パスを持つコンテナーです。

{
  "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
  "apiVersion": "2024-04-15",
  "name": "[concat('csmsarm', uniqueString(resourceGroup().id), '/cosmicworks/products')]",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', concat('csmsarm', uniqueString(resourceGroup().id)))]",
    "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', concat('csmsarm', uniqueString(resourceGroup().id)), 'cosmicworks')]"
  ],
  "properties": {
    "resource": {
      "id": "products",
      "partitionKey": {
        "paths": [
          "/categoryId"
        ]
      }
    },
    "options": {
      "autoscaleSettings": {
        "maxThroughput": 1000
      }
    }
  }
}

Note

スループット自体はコンテナーの子リソースであり、コンテナーの Microsoft.DocumentDB/databaseAccounts/sqlDatabases/throughputSettings という子リソースを作成することでプロビジョニングできます。 ただし、コンテナー プロパティの options を使用してスループット値を設定する方が簡単です。 これは、コンテナーのスループットの作成と更新の両方で推奨される手段です。

最終的なテンプレート

すべてのリソースが配置されたので、テンプレート ファイルには次のコードが含まれるはずです。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2024-04-15",
      "name": "[concat('csmsarm', uniqueString(resourceGroup().id))]",
      "location": "[resourceGroup().location]",
      "properties": {
        "databaseAccountOfferType": "Standard",
        "locations": [
          {
            "locationName": "westus"
          }
        ]
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
      "apiVersion": "2024-04-15",
      "name": "[concat('csmsarm', uniqueString(resourceGroup().id), '/cosmicworks')]",
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', concat('csmsarm', uniqueString(resourceGroup().id)))]"
      ],
      "properties": {
        "resource": {
          "id": "cosmicworks"
        }
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
      "apiVersion": "2021-05-15",
      "name": "[concat('csmsarm', uniqueString(resourceGroup().id), '/cosmicworks/products')]",
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', concat('csmsarm', uniqueString(resourceGroup().id)))]",
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', concat('csmsarm', uniqueString(resourceGroup().id)), 'cosmicworks')]"
      ],
      "properties": {
        "resource": {
          "id": "products",
          "partitionKey": {
            "paths": [
              "/categoryId"
            ]
          }
        },
        "options": {
          "autoscaleSettings": {
            "maxThroughput": 1000
          }
        }
      }
    }
  ]
}