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
}
}
}
}
]
}