Inicio rápido: Creación de una instancia de Azure Cosmos DB y un contenedor mediante una plantilla de Resource Manager
SE APLICA A: NoSQL
Azure Cosmos DB es la base de datos NoSQL rápida de Microsoft con API abiertas para cualquier escala. Puede usar Azure Cosmos DB para crear y consultar rápidamente las bases de datos de grafos, documentos y de claves y valores. Puede configurar una cuenta gratuita de Azure Cosmos DB de prueba sin una tarjeta de crédito o una suscripción de Azure. Este inicio rápido se centra en el proceso de implementación de una plantilla de Azure Resource Manager para crear una base de datos de Azure Cosmos DB y un contenedor en dicha base de datos. Posteriormente, puede almacenar datos en este contenedor.
Una Plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de su proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.
Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de Resource Manager, seleccione el botón Implementar en Azure. La plantilla se abrirá en Azure Portal.
Requisitos previos
Una suscripción a Azure o una cuenta de evaluación gratuita de Azure Cosmos DB
-
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
-
Puede probar gratis Azure Cosmos DB sin una suscripción de Azure, de forma gratuita y sin compromiso. Como alternativa, puede crear una cuenta de nivel gratis de Azure Cosmos DB, con las primeras 1000 RU/s y 25 GB de almacenamiento de forma gratuita. También puede usar el emulador de Azure Cosmos DB con un identificador URI
https://localhost:8081
. Para obtener la clave que se va a usar con el emulador, consulte Autenticación de solicitudes.
Revisión de la plantilla
La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de 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'))]"
}
}
}
En la plantilla se definen tres recursos de Azure:
Microsoft.DocumentDB/databaseAccounts: creación de una cuenta de Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: creación de una base de datos de Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: creación de un contenedor de Azure Cosmos DB.
Importante
El proveedor de Azure Resource Manager, Microsoft.DocumentDB/databaseAccounts
, ha mantenido el mismo nombre durante muchos años. Esto garantiza que las plantillas escritas hace años siguen siendo compatibles con el mismo proveedor, incluso cuando el nombre del servicio y los subservicios han evolucionado.
Encontrará más ejemplos de plantillas de Azure Cosmos DB en la galería de plantillas de inicio rápido.
Implementación de la plantilla
Seleccione la imagen siguiente para iniciar sesión en Azure y abrir una plantilla. La plantilla crea una cuenta, una base de datos y un contenedor de Azure Cosmos DB.
Seleccione o escriba los siguientes valores.
A menos que se especifique, utilice los valores predeterminados para crear los recursos de Azure Cosmos DB.
- Suscripción: seleccione una suscripción de Azure.
- Grupo de recursos: seleccione Crear nuevo, escriba un nombre único para el grupo de recursos y, a continuación, haga clic en Aceptar.
- Ubicación: seleccione una ubicación. Por ejemplo, Centro de EE. UU.
- Nombre de cuenta: escriba un nombre para la cuenta de Azure Cosmos DB. Debe ser único globalmente.
- Ubicación: escriba una ubicación donde desea crear la cuenta de Azure Cosmos DB. La cuenta de Azure Cosmos DB puede estar en la misma ubicación que el grupo de recursos.
- Región principal: región de la réplica principal de la cuenta de Azure Cosmos DB.
- Región secundaria: región de la réplica secundaria de la cuenta de Azure Cosmos DB.
- Nivel de coherencia predeterminado: nivel de coherencia predeterminado de la cuenta de Azure Cosmos DB.
- Prefijo de obsolescencia máxima: número máximo de solicitudes obsoletas. Necesario para BoundedStaleness.
- Intervalo máximo en segundos: tiempo máximo de retardo. Necesario para BoundedStaleness.
- Nombre de la base de datos: nombre de la base de datos de Azure Cosmos DB.
- Nombre del contenedor: nombre del contenedor de Azure Cosmos DB.
- Rendimiento: rendimiento del contenedor; el valor de rendimiento mínimo es 400 RU/s.
- Acepto los términos y condiciones anteriores: Seleccionar.
Seleccione Comprar. Cuando la cuenta de Azure Cosmos DB se haya implementado correctamente, recibirá una notificación:
Azure Portal se usa para implementar la plantilla. Además de Azure Portal, también puede usar Azure PowerShell, la CLI de Azure y API REST. Para obtener información sobre otros métodos de implementación, consulte Implementación de plantillas.
Validación de la implementación
Puede usar Azure Portal para comprobar la cuenta de Azure Cosmos DB, la base de datos y el contenedor o usar el siguiente script de la CLI de Azure o Azure PowerShell para enumerar el secreto que ha creado.
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
Limpieza de recursos
Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no lo necesite, elimine el grupo de recursos; de este modo, se eliminarán también la cuenta y los recursos relacionados de Azure Cosmos DB. Para eliminar el grupo de recursos mediante la CLI de Azure o Azure PowerShell:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Pasos siguientes
En este inicio rápido, ha creado una cuenta de Azure Cosmos DB, una base de datos y un contenedor mediante una plantilla de Resource Manager y ha validado la implementación. Para más información sobre Azure Cosmos DB y Azure Resource Manager, continúe con los artículos siguientes.
- Lea una introducción a Azure Cosmos DB.
- Obtenga más información sobre Azure Resource Manager.
- Obtenga otras plantillas de Azure Resource Manager para Azure Cosmos DB.
- ¿Intenta planear la capacidad de una migración a Azure Cosmos DB? Para ello, puede usar información sobre el clúster de bases de datos existente.
- Si lo único que sabe es el número de núcleos virtuales y servidores del clúster de bases de datos existente, lea sobre el cálculo de unidades de solicitud mediante núcleos o CPU virtuales.
- Si conoce las tasas de solicitudes típicas de la carga de trabajo de la base de datos actual, obtenga información sobre el cálculo de unidades de solicitud mediante la herramienta de planeamiento de capacidad de Azure Cosmos DB.