Creare un database e un contenitore per Azure Cosmos DB - API per NoSQL
SI APPLICA A: NoSQL
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Questo esempio richiede Azure PowerShell Az 5.4.0 o versioni successive. Eseguire Get-Module -ListAvailable Az
per determinare le versioni installate.
Se è necessario installarlo, vedere Installare il modulo Azure PowerShell.
Eseguire Connect-AzAccount per accedere ad Azure.
Script di esempio
Questo script crea un account Azure Cosmos DB per l'API per NoSQL in due aree con coerenza a livello di sessione, un database e un contenitore con una chiave di partizione, criteri di indicizzazione personalizzati, criteri di chiave univoca, durata TTL, unità elaborate dedicate e criteri di risoluzione dei conflitti basati sulla priorità dell'ultima scrittura con un percorso di risoluzione dei conflitti personalizzato che verrà usato quando 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
Pulire la distribuzione
Dopo l'esecuzione dello script di esempio, è possibile usare il comando seguente per rimuovere il gruppo di risorse e tutte le risorse ad esso associate.
Remove-AzResourceGroup -ResourceGroupName "myResourceGroup"
Spiegazione dello script
Questo script usa i comandi seguenti. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.
Comando | Note |
---|---|
Azure Cosmos DB | |
New-AzCosmosDBAccount | Crea un account Azure Cosmos DB. |
New-AzCosmosDBSqlDatabase | Crea un database SQL di Azure Cosmos DB. |
New-AzCosmosDBSqlUniqueKey | Crea un oggetto PSSqlUniqueKey usato come parametro per New-AzCosmosDBSqlUniqueKeyPolicy. |
New-AzCosmosDBSqlUniqueKeyPolicy | Crea un oggetto PSSqlUniqueKeyPolicy usato come parametro per New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlCompositePath | Crea un oggetto PSCompositePath usato come parametro per New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIncludedPathIndex | Crea un oggetto PSIndexes usato come parametro per New-AzCosmosDBSqlIncludedPath. |
New-AzCosmosDBSqlIncludedPath | Crea un oggetto PSIncludedPath usato come parametro per New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIndexingPolicy | Crea un oggetto PSSqlIndexingPolicy usato come parametro per New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlConflictResolutionPolicy | Crea un oggetto PSSqlConflictResolutionPolicy usato come parametro per New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlContainer | Crea un nuovo contenitore SQL di Azure Cosmos DB. |
Gruppi di risorse di Azure | |
Remove-AzResourceGroup | Consente di eliminare un gruppo di risorse incluse tutte le risorse annidate. |
Passaggi successivi
Per altre informazioni su Azure PowerShell, vedere la documentazione di Azure PowerShell.