Bagikan melalui


Mulai Cepat: Buat Azure Cosmos DB dan kontainer dengan menggunakan templat ARM

BERLAKU UNTUK: NoSQL

Azure Cosmos DB adalah database NoSQL cepat Microsoft dengan API terbuka untuk skala apa pun. Anda dapat menggunakan Azure Cosmos DB untuk membuat dan mengueri database kunci/nilai, dokumen, dan grafik dengan cepat. Tanpa kartu kredit atau langganan Azure, Anda dapat menyiapkan Coba akun Azure Cosmos DB gratis. Mulai cepat ini berfokus pada proses penyebaran templat Azure Resource Manager (templat ARM) untuk membuat database Azure Cosmos DB dan kontainer dalam database tersebut. Anda nantinya dapat menyimpan data dalam kontainer ini.

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Jika lingkungan Anda telah memenuhi prasyarat dan Anda terbiasa menggunakan templat ARM, pilih tombol Sebarkan ke Azure. Templat akan terbuka di portal Microsoft Azure.

Tombol untuk menyebarkan templat Resource Manager ke Azure.

Prasyarat

Langganan Azure atau akun uji coba Azure Cosmos DB gratis

Meninjau templat

Templat yang digunakan di mulai cepat ini berasal dari Templat Mulai Cepat Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "7578513359154607542"
    }
  },
  "parameters": {
    "accountName": {
      "type": "string",
      "defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Azure Cosmos DB account name, max length 44 characters"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the Azure Cosmos DB account."
      }
    },
    "primaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The primary region for the Azure Cosmos DB account."
      }
    },
    "secondaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The secondary region for the Azure Cosmos DB account."
      }
    },
    "defaultConsistencyLevel": {
      "type": "string",
      "defaultValue": "Session",
      "allowedValues": [
        "Eventual",
        "ConsistentPrefix",
        "Session",
        "BoundedStaleness",
        "Strong"
      ],
      "metadata": {
        "description": "The default consistency level of the Cosmos DB account."
      }
    },
    "maxStalenessPrefix": {
      "type": "int",
      "defaultValue": 100000,
      "minValue": 10,
      "maxValue": 2147483647,
      "metadata": {
        "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647."
      }
    },
    "maxIntervalInSeconds": {
      "type": "int",
      "defaultValue": 300,
      "minValue": 5,
      "maxValue": 86400,
      "metadata": {
        "description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400."
      }
    },
    "systemManagedFailover": {
      "type": "bool",
      "defaultValue": true,
      "allowedValues": [
        true,
        false
      ],
      "metadata": {
        "description": "Enable system managed failover for regions"
      }
    },
    "databaseName": {
      "type": "string",
      "defaultValue": "myDatabase",
      "metadata": {
        "description": "The name for the database"
      }
    },
    "containerName": {
      "type": "string",
      "defaultValue": "myContainer",
      "metadata": {
        "description": "The name for the container"
      }
    },
    "throughput": {
      "type": "int",
      "defaultValue": 400,
      "minValue": 400,
      "maxValue": 1000000,
      "metadata": {
        "description": "The throughput for the container"
      }
    }
  },
  "variables": {
    "consistencyPolicy": {
      "Eventual": {
        "defaultConsistencyLevel": "Eventual"
      },
      "ConsistentPrefix": {
        "defaultConsistencyLevel": "ConsistentPrefix"
      },
      "Session": {
        "defaultConsistencyLevel": "Session"
      },
      "BoundedStaleness": {
        "defaultConsistencyLevel": "BoundedStaleness",
        "maxStalenessPrefix": "[parameters('maxStalenessPrefix')]",
        "maxIntervalInSeconds": "[parameters('maxIntervalInSeconds')]"
      },
      "Strong": {
        "defaultConsistencyLevel": "Strong"
      }
    },
    "locations": [
      {
        "locationName": "[parameters('primaryRegion')]",
        "failoverPriority": 0,
        "isZoneRedundant": false
      },
      {
        "locationName": "[parameters('secondaryRegion')]",
        "failoverPriority": 1,
        "isZoneRedundant": false
      }
    ]
  },
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2024-02-15-preview",
      "name": "[toLower(parameters('accountName'))]",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "enableAutomaticFailover": "[parameters('systemManagedFailover')]",
        "disableKeyBasedMetadataWriteAccess": true
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
      "apiVersion": "2024-02-15-preview",
      "name": "[format('{0}/{1}', toLower(parameters('accountName')), parameters('databaseName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('databaseName')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', toLower(parameters('accountName')))]"
      ]
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
      "apiVersion": "2024-02-15-preview",
      "name": "[format('{0}/{1}/{2}', toLower(parameters('accountName')), parameters('databaseName'), parameters('containerName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('containerName')]",
          "partitionKey": {
            "paths": [
              "/myPartitionKey"
            ],
            "kind": "Hash"
          },
          "indexingPolicy": {
            "indexingMode": "consistent",
            "includedPaths": [
              {
                "path": "/*"
              }
            ],
            "excludedPaths": [
              {
                "path": "/myPathToNotIndex/*"
              },
              {
                "path": "/_etag/?"
              }
            ],
            "compositeIndexes": [
              [
                {
                  "path": "/name",
                  "order": "ascending"
                },
                {
                  "path": "/age",
                  "order": "descending"
                }
              ]
            ],
            "spatialIndexes": [
              {
                "path": "/location/*",
                "types": [
                  "Point",
                  "Polygon",
                  "MultiPolygon",
                  "LineString"
                ]
              }
            ]
          },
          "defaultTtl": 86400,
          "uniqueKeyPolicy": {
            "uniqueKeys": [
              {
                "paths": [
                  "/phoneNumber"
                ]
              }
            ]
          }
        },
        "options": {
          "throughput": "[parameters('throughput')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('databaseName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
    }
  }
}

Tiga sumber daya Azure telah ditentukan dalam templat:

Penting

Penyedia Azure Resource Manager, Microsoft.DocumentDB/databaseAccounts, telah mempertahankan nama yang sama selama bertahun-tahun. Ini memastikan bahwa templat yang ditulis bertahun-tahun yang lalu masih kompatibel dengan penyedia yang sama bahkan dengan nama layanan dan sub-layanan telah berkembang.

Sampel templat Azure Cosmos DB dapat lebih banyak ditemukan di galeri templat mulai cepat.

Menyebarkan templat

  1. Pilih gambar berikut untuk masuk ke Azure dan buka templat. Templat membuat akun Azure Cosmos DB, database, dan kontainer.

    Tombol untuk menyebarkan templat Resource Manager ke Azure.

  2. Pilih atau masukkan nilai berikut.

    Templat ARM, integrasi Azure Cosmos DB, portal penyebaran

    Kecuali ditentukan, gunakan nilai default untuk membuat sumber daya Azure Cosmos DB.

    • Langganan: pilih langganan Azure.
    • Grup sumber daya: pilih Buat baru, masukkan nama unik untuk grup sumber daya, lalu klik OK.
    • Lokasi: pilih lokasi. Misalnya, US Tengah.
    • Nama Akun: masukkan nama untuk akun Azure Cosmos DB. Nama ini harus unik secara global.
    • Lokasi: masukkan lokasi tempat Anda ingin membuat akun Azure Cosmos DB Anda. Akun Azure Cosmos DB dapat berada di lokasi yang sama dengan grup sumber daya.
    • Wilayah Utama: Wilayah replika utama untuk akun Azure Cosmos DB.
    • Wilayah sekunder: Wilayah replika sekunder untuk akun Azure Cosmos DB.
    • Tingkat Konsistensi Default: Tingkat konsistensi default untuk akun Azure Cosmos DB.
    • Maks Prefiks Staleness: Permintaan stale maks. Diperlukan untuk BoundedStaleness.
    • Maks Interval dalam Detik: Waktu jeda maks. Diperlukan untuk BoundedStaleness.
    • Nama Database: Nama database Azure Cosmos DB.
    • Nama Kontainer: Nama kontainer Azure Cosmos DB.
    • Throughput: Throughput untuk kontainer, nilai throughput minimum adalah 400 RU/dtk.
    • Saya menyetujui syarat dan ketentuan yang dinyatakan di atas: Pilih.
  3. Pilih Beli. Setelah akun Azure Cosmos DB berhasil disebarkan, Anda mendapatkan pemberitahuan:

    Templat ARM, integrasi Azure Cosmos DB, menyebarkan pemberitahuan portal

Portal Microsoft Azure digunakan untuk menyebarkan template. Selain portal Microsoft Azure, Anda juga dapat menggunakan Azure PowerShell, Azure CLI, dan REST API. Untuk mempelajari metode penyebaran lainnya, lihat Menyebarkan templat.

Memvalidasi penyebaran

Anda dapat menggunakan portal Azure untuk memeriksa akun Azure Cosmos DB, database, dan kontainer atau menggunakan skrip Azure CLI atau Azure PowerShell berikut untuk mencantumkan rahasia yang dibuat.

echo "Enter your Azure Cosmos DB account name:" &&
read cosmosAccountName &&
echo "Enter the resource group where the Azure Cosmos DB account exists:" &&
read resourcegroupName &&
az cosmosdb show -g $resourcegroupName -n $cosmosAccountName

Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, biarkan sumber daya ini tetap di tempatnya. Jika tidak lagi diperlukan, hapus grup sumber daya, yang menghapus akun Azure Cosmos DB dan sumber daya terkait. Untuk menghapus grup sumber daya menggunakan Azure CLI atau Azure PowerShell:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat akun Azure Cosmos DB, database, dan kontainer dengan menggunakan templat ARM dan memvalidasi penyebaran. Untuk mempelajari selengkapnya tentang Azure Cosmos DB dan Azure Resource Manager, lihat artikel di bawah ini.