Dela via


Snabbstart: Skapa en Azure Cosmos DB och en container med hjälp av en ARM-mall

GÄLLER FÖR: NoSQL

Azure Cosmos DB är Microsofts snabba NoSQL-databas med öppna API:er för valfri skala. Du kan använda Azure Cosmos DB för att snabbt skapa och fråga efter nyckel-/värdedatabaser, dokumentdatabaser och grafdatabaser. Utan ett kreditkort eller en Azure-prenumeration kan du konfigurera ett kostnadsfritt Prova Azure Cosmos DB-konto. Den här snabbstarten fokuserar på processen att distribuera en Azure Resource Manager-mall (ARM-mall) för att skapa en Azure Cosmos DB-databas och en container i databasen. Du kan senare lagra data i den här containern.

En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.

Om din miljö uppfyller förhandskraven och du är van att använda ARM-mallar väljer du knappen Distribuera till Azure. Mallen öppnas på Azure-portalen.

Knapp för att distribuera Resource Manager-mallen till Azure.

Förutsättningar

En Azure-prenumeration eller ett kostnadsfritt Utvärderingskonto för Azure Cosmos DB

Granska mallen

Mallen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.

{
  "$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'))]"
    }
  }
}

Tre Azure-resurser definieras i mallen:

Fler Azure Cosmos DB-mallexempel finns i snabbstartsmallgalleriet.

Distribuera mallen

  1. Välj följande bild för att logga in på Azure och öppna en mall. Mallen skapar ett Azure Cosmos DB-konto, en databas och en container.

    Knapp för att distribuera Resource Manager-mallen till Azure.

  2. Välj eller ange följande värden.

    ARM-mall, Azure Cosmos DB-integrering, distribuera portalen

    Om det inte anges använder du standardvärdena för att skapa Azure Cosmos DB-resurserna.

    • Prenumeration: välj en Azure-prenumeration.
    • Resursgrupp: välj Skapa ny, ange ett unikt namn för resursgruppen och klicka sedan på OK.
    • Plats: välj en plats. Välj till exempel USA, centrala.
    • Kontonamn: ange ett namn för Azure Cosmos DB-kontot. Den måste vara globalt unik.
    • Plats: Ange en plats där du vill skapa ditt Azure Cosmos DB-konto. Azure Cosmos DB-kontot kan finnas på samma plats som resursgruppen.
    • Primär region: Den primära replikregionen för Azure Cosmos DB-kontot.
    • Sekundär region: Den sekundära replikregionen för Azure Cosmos DB-kontot.
    • Standardkonsekvensnivå: Standardkonsekvensnivån för Azure Cosmos DB-kontot.
    • Max föråldringsprefix: Maximalt antal inaktuella begäranden. Krävs för BoundedStaleness.
    • Maximalt intervall i sekunder: Maximal fördröjningstid. Krävs för BoundedStaleness.
    • Databasnamn: Namnet på Azure Cosmos DB-databasen.
    • Containernamn: Namnet på Azure Cosmos DB-containern.
    • Dataflöde: Dataflödet för containern, minsta dataflödesvärde är 400 RU/s.
    • Jag godkänner villkoren ovan: Välj.
  3. Välj Köp. När Azure Cosmos DB-kontot har distribuerats får du ett meddelande:

    ARM-mall, Azure Cosmos DB-integrering, distribuera portalavisering

Azure-portalen används för att distribuera mallen. Förutom Azure-portalen kan du även använda Azure PowerShell, Azure CLI och REST API. Mer information om andra distributionsmetoder finns i Distribuera mallar.

Verifiera distributionen

Du kan antingen använda Azure-portalen för att kontrollera Azure Cosmos DB-kontot, databasen och containern eller använda följande Azure CLI- eller Azure PowerShell-skript för att visa den hemlighet som skapats.

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

Rensa resurser

Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats. När den inte längre behövs tar du bort resursgruppen, som tar bort Azure Cosmos DB-kontot och de relaterade resurserna. Så här tar du bort resursgruppen med hjälp av Azure CLI eller Azure PowerShell:

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

Nästa steg

I den här snabbstarten skapade du ett Azure Cosmos DB-konto, en databas och en container med hjälp av en ARM-mall och verifierade distributionen. Om du vill veta mer om Azure Cosmos DB och Azure Resource Manager fortsätter du till artiklarna nedan.