Démarrage rapide : Créer une base de données Azure Cosmos DB et un conteneur avec Bicep
S’APPLIQUE À : NoSQL
Azure Cosmos DB est la base de données NoSQL rapide de Microsoft avec des API ouvertes pour toute échelle. Vous pouvez utiliser Azure Cosmos DB pour créer et interroger rapidement des bases de données de clés/valeurs, de documents et de graphes. Sans carte de crédit ou abonnement Azure, vous pouvez configurer un compte d’essai Azure Cosmos DB gratuit. Ce guide de démarrage rapide porte essentiellement sur le processus de déploiement d’un fichier Bicep pour créer une base de données Azure Cosmos DB et un conteneur dans cette base de données. Vous pouvez ensuite stocker des données dans ce conteneur.
Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.
Prérequis
Un abonnement Azure ou un compte d’essai gratuit Azure Cosmos DB.
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Examiner le fichier Bicep
Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide Azure.
@description('Azure Cosmos DB account name, max length 44 characters')
param accountName string = 'sql-${uniqueString(resourceGroup().id)}'
@description('Location for the Azure Cosmos DB account.')
param location string = resourceGroup().location
@description('The primary region for the Azure Cosmos DB account.')
param primaryRegion string
@description('The secondary region for the Azure Cosmos DB account.')
param secondaryRegion string
@allowed([
'Eventual'
'ConsistentPrefix'
'Session'
'BoundedStaleness'
'Strong'
])
@description('The default consistency level of the Cosmos DB account.')
param defaultConsistencyLevel string = 'Session'
@minValue(10)
@maxValue(2147483647)
@description('Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.')
param maxStalenessPrefix int = 100000
@minValue(5)
@maxValue(86400)
@description('Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.')
param maxIntervalInSeconds int = 300
@allowed([
true
false
])
@description('Enable system managed failover for regions')
param systemManagedFailover bool = true
@description('The name for the database')
param databaseName string = 'myDatabase'
@description('The name for the container')
param containerName string = 'myContainer'
@minValue(400)
@maxValue(1000000)
@description('The throughput for the container')
param throughput int = 400
var consistencyPolicy = {
Eventual: {
defaultConsistencyLevel: 'Eventual'
}
ConsistentPrefix: {
defaultConsistencyLevel: 'ConsistentPrefix'
}
Session: {
defaultConsistencyLevel: 'Session'
}
BoundedStaleness: {
defaultConsistencyLevel: 'BoundedStaleness'
maxStalenessPrefix: maxStalenessPrefix
maxIntervalInSeconds: maxIntervalInSeconds
}
Strong: {
defaultConsistencyLevel: 'Strong'
}
}
var locations = [
{
locationName: primaryRegion
failoverPriority: 0
isZoneRedundant: false
}
{
locationName: secondaryRegion
failoverPriority: 1
isZoneRedundant: false
}
]
resource account 'Microsoft.DocumentDB/databaseAccounts@2024-02-15-preview' = {
name: toLower(accountName)
location: location
kind: 'GlobalDocumentDB'
properties: {
consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
locations: locations
databaseAccountOfferType: 'Standard'
enableAutomaticFailover: systemManagedFailover
disableKeyBasedMetadataWriteAccess: true
}
}
resource database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-02-15-preview' = {
parent: account
name: databaseName
properties: {
resource: {
id: databaseName
}
}
}
resource container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2024-02-15-preview' = {
parent: database
name: containerName
properties: {
resource: {
id: 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: throughput
}
}
}
output location string = location
output name string = database.name
output resourceGroupName string = resourceGroup().name
output resourceId string = database.id
Trois ressources Azure sont définies dans le fichier Bicep :
Microsoft.DocumentDB/databaseAccounts : Créer un compte Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases : Créer une base de données Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers : Créer un conteneur Azure Cosmos DB.
Important
Le fournisseur Azure Resource Manager, Microsoft.DocumentDB/databaseAccounts
, a conservé le même nom depuis de nombreuses années. Cela garantit que les modèles écrits il y a des années sont toujours compatibles avec le même fournisseur même si les noms du service et des sous-services ont évolué.
Déployer le fichier Bicep
Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.
Déployez le fichier Bicep à l’aide d’Azure CLI ou d’Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters primaryRegion=<primary-region> secondaryRegion=<secondary-region>
Notes
Remplacez la <primary-region> par la région de réplica principal pour le compte d’Azure Cosmos DB, par exemple WestUS. Remplacez la <secondary-region> par la région de réplica secondaire pour le compte d’Azure Cosmos DB, par exemple EastUS.
Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.
Valider le déploiement
Utilisez le portail Azure, Azure CLI ou Azure PowerShell pour répertorier les ressources déployées dans le groupe de ressources.
az resource list --resource-group exampleRG
Nettoyer les ressources
Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources. Quand vous n’avez plus besoin du groupe de ressources ni de ses ressources, utilisez le portail Azure, Azure CLI ou Azure PowerShell pour les supprimer.
az group delete --name exampleRG
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un compte, une base de données et un conteneur Azure Cosmos DB avec un fichier Bicep et vous avez vérifié le déploiement. Pour en savoir plus sur Azure Cosmos DB et Bicep, consultez les articles ci-dessous.
- Consultez Vue d’ensemble d’Azure Cosmos DB.
- En savoir plus sur Bicep.
- Vous tentez d’effectuer une planification de la capacité pour une migration vers Azure Cosmos DB ? Vous pouvez utiliser les informations sur votre cluster de bases de données existant pour la planification de la capacité.
- Si vous ne connaissez que le nombre de vCores et de serveurs présents dans votre cluster de bases de données existant, lisez Estimation des unités de requête en utilisant les vCores ou les processeurs virtuels.
- Si vous connaissez les taux de requêtes typiques de votre charge de travail de base de données actuelle, lisez Estimation des unités de requête à l’aide du planificateur de capacité Azure Cosmos DB.