Creación de una base de datos y un contenedor para Azure Cosmos DB: API para NoSQL
SE APLICA A: NoSQL
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Este ejemplo requiere Azure PowerShell Az 5.4.0 o una versión posterior. Ejecute Get-Module -ListAvailable Az
para ver qué versiones están instaladas.
Si necesita instalarlo, consulte Instalación del módulo de Azure PowerShell.
Ejecute Connect AzAccount para iniciar sesión en Azure.
Script de ejemplo
Este script crea una cuenta de Azure Cosmos DB para la API para NoSQL en dos regiones con coherencia de nivel de sesión, una base de datos y un contenedor con una clave de partición, una directiva de indexación personalizada, una directiva de clave única, un TTL, una capacidad de proceso dedicada y una directiva de resolución de conflictos en la que el último escritor gana, con una ruta de resolución de conflictos personalizada que se utilizará cuando multipleWriteLocations=true
.
# Reference: Az.CosmosDB | https://docs.microsoft.com/powershell/module/az.cosmosdb
# --------------------------------------------------
# Purpose
# Create Cosmos SQL API account, database, and container with dedicated throughput,
# indexing policy with include, exclude, and composite paths, unique key, and conflict resolution
# --------------------------------------------------
Function New-RandomString{Param ([Int]$Length = 10) return $(-join ((97..122) + (48..57) | Get-Random -Count $Length | ForEach-Object {[char]$_}))}
# --------------------------------------------------
$uniqueId = New-RandomString -Length 7 # Random alphanumeric string for unique resource names
$apiKind = "Sql"
# --------------------------------------------------
# Variables - ***** SUBSTITUTE YOUR VALUES *****
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East Us" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West Us" -FailoverPriority 1 -IsZoneRedundant 0
$resourceGroupName = "myResourceGroup" # Resource Group must already exist
$accountName = "cosmos-$uniqueId" # Must be all lower case
$consistencyLevel = "Session"
$tags = @{Tag1 = "MyTag1"; Tag2 = "MyTag2"; Tag3 = "MyTag3"}
$databaseName = "myDatabase"
$containerName = "myContainer"
$containerRUs = 400
$partitionKeyPath = "/myPartitionKey"
$indexPathIncluded = "/*"
$compositeIndexPaths1 = @(
@{ Path = "/myCompositePath1"; Order = "ascending" };
@{ Path = "/myCompositePath2"; Order = "descending" }
)
$compositeIndexPaths2 = @(
@{ Path = "/myCompositePath3"; Order = "ascending" };
@{ Path = "/myCompositePath4"; Order = "descending" }
)
$indexPathExcluded = "/myExcludedPath/*"
$uniqueKeyPath = "/myUniqueKeyPath"
$conflictResolutionPath = "/myResolutionPath"
$ttlInSeconds = 120 # Set this to -1 (or don't use it at all) to never expire
# --------------------------------------------------
Write-Host "Creating account $accountName"
$account = New-AzCosmosDBAccount -ResourceGroupName $resourceGroupName `
-LocationObject $locations -Name $accountName -ApiKind $apiKind -Tag $tags `
-DefaultConsistencyLevel $consistencyLevel `
-EnableAutomaticFailover:$true
Write-Host "Creating database $databaseName"
$database = New-AzCosmosDBSqlDatabase -ParentObject $account -Name $databaseName
$uniqueKey = New-AzCosmosDBSqlUniqueKey -Path $uniqueKeyPath
$uniqueKeyPolicy = New-AzCosmosDBSqlUniqueKeyPolicy -UniqueKey $uniqueKey
$compositePath1 = @()
ForEach ($compositeIndexPath in $compositeIndexPaths1) {
$compositePath1 += New-AzCosmosDBSqlCompositePath `
-Path $compositeIndexPath.Path `
-Order $compositeIndexPath.Order
}
$compositePath2 = @()
ForEach ($compositeIndexPath in $compositeIndexPaths2) {
$compositePath2 += New-AzCosmosDBSqlCompositePath `
-Path $compositeIndexPath.Path `
-Order $compositeIndexPath.Order
}
$includedPathIndex = New-AzCosmosDBSqlIncludedPathIndex -DataType String -Kind Range
$includedPath = New-AzCosmosDBSqlIncludedPath -Path $indexPathIncluded -Index $includedPathIndex
$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
-IncludedPath $includedPath `
-CompositePath @($compositePath1, $compositePath2) `
-ExcludedPath $indexPathExcluded `
-IndexingMode Consistent -Automatic $true
# Conflict resolution policies only apply in multi-master accounts.
# Included here to show custom resolution path.
$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
-Type LastWriterWins -Path $conflictResolutionPath
Write-Host "Creating container $containerName"
$container = New-AzCosmosDBSqlContainer `
-ParentObject $database -Name $containerName `
-Throughput $containerRUs -IndexingPolicy $indexingPolicy `
-PartitionKeyKind Hash -PartitionKeyPath $partitionKeyPath `
-UniqueKeyPolicy $uniqueKeyPolicy `
-ConflictResolutionPolicy $conflictResolutionPolicy `
-TtlInSeconds $ttlInSeconds
Limpieza de la implementación
Después de ejecutar el script de ejemplo, se puede usar el comando siguiente para quitar el grupo de recursos y todos los recursos asociados.
Remove-AzResourceGroup -ResourceGroupName "myResourceGroup"
Explicación del script
Este script usa los siguientes comandos. Cada comando de la tabla crea un vínculo a documentación específica del comando.
Get-Help | Notas |
---|---|
Azure Cosmos DB | |
New-AzCosmosDBAccount | Crea una cuenta de Azure Cosmos DB. |
New-AzCosmosDBSqlDatabase | Crea una instancia de SQL Database de Azure Cosmos DB. |
New-AzCosmosDBSqlUniqueKey | Crea un nuevo objeto PSSqlUniqueKey que se usa como parámetro para New-AzCosmosDBSqlUniqueKeyPolicy. |
New-AzCosmosDBSqlUniqueKeyPolicy | Crea un nuevo objeto PSSqlUniqueKeyPolicy que se usa como parámetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlCompositePath | Crea un nuevo objeto PSCompositePath que se usa como parámetro para New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIncludedPathIndex | Crea un objeto PSIndexes que se usa como parámetro para New-AzCosmosDBSqlIncludedPath. |
New-AzCosmosDBSqlIncludedPath | Crea un objeto PSIncludedPath que se usa como parámetro para New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIndexingPolicy | Crea un objeto PSSqlIndexingPolicy que se usa como parámetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlConflictResolutionPolicy | Crea un objeto PSSqlConflictResolutionPolicy que se usa como parámetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlContainer | Crea un nuevo contenedor SQL de Azure Cosmos DB. |
Grupos de recursos de Azure | |
Remove-AzResourceGroup | Elimina un grupo de recursos, incluidos todos los recursos anidados. |
Pasos siguientes
Para más información sobre Azure PowerShell, consulte la documentación de Azure PowerShell.