Zarządzanie zasobami usługi Azure Cosmos DB for NoSQL przy użyciu programu PowerShell

DOTYCZY: NoSQL

W poniższym przewodniku opisano sposób używania programu PowerShell do tworzenia skryptów i automatyzowania zarządzania zasobami usługi Azure Cosmos DB for NoSQL, w tym konta usługi Azure Cosmos DB, bazy danych, kontenera i przepływności. W przypadku poleceń cmdlet programu PowerShell dla innych interfejsów API zobacz Przykłady programu PowerShell dla cassandra, przykłady programu PowerShell dla interfejsu API dla bazy danych MongoDB, przykłady programu PowerShell dla języka Gremlin, przykłady programu PowerShell dla tabeli

Uwaga

Przykłady w tym artykule używają poleceń cmdlet zarządzania az.CosmosDB . Aby uzyskać najnowsze zmiany, zobacz stronę referencyjną interfejsu API az.CosmosDB .

W przypadku zarządzania międzyplatformowego usługi Azure Cosmos DB można używać Az poleceń cmdlet i Az.CosmosDB z programem PowerShell dla wielu platform, a także interfejsu wiersza polecenia platformy Azure, interfejsu API REST lub witryny Azure Portal.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wprowadzenie

Postępuj zgodnie z instrukcjami w temacie Instalowanie i konfigurowanie programu Azure PowerShell w celu zainstalowania i zalogowania się do konta platformy Azure w programie PowerShell.

Ważne

Nie można zmienić nazwy zasobów usługi Azure Cosmos DB, ponieważ narusza to sposób działania usługi Azure Resource Manager z identyfikatorami URI zasobów.

Konta usługi Azure Cosmos DB

W poniższych sekcjach pokazano, jak zarządzać kontem usługi Azure Cosmos DB, w tym:

Tworzenie konta usługi Azure Cosmos DB

To polecenie tworzy konto bazy danych usługi Azure Cosmos DB z wieloma regionami, zarządzanymi przez usługę zasadami spójności trybu failover i powiązana nieaktualność.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$apiKind = "Sql"
$consistencyLevel = "BoundedStaleness"
$maxStalenessInterval = 300
$maxStalenessPrefix = 100000
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0

New-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -LocationObject $locations `
    -Name $accountName `
    -ApiKind $apiKind `
    -EnableAutomaticFailover:$true `
    -DefaultConsistencyLevel $consistencyLevel `
    -MaxStalenessIntervalInSeconds $maxStalenessInterval `
    -MaxStalenessPrefix $maxStalenessPrefix
  • $resourceGroupName Grupa zasobów platformy Azure, w której ma zostać wdrożone konto usługi Azure Cosmos DB. Musi już istnieć.
  • $locations Regiony dla konta bazy danych, region, FailoverPriority 0 w którym znajduje się region zapisu.
  • $accountName Nazwa konta usługi Azure Cosmos DB. Musi być unikatowa, małe litery, zawierać tylko znaki alfanumeryczne i "-" oraz od 3 do 31 znaków.
  • $apiKind Typ konta usługi Azure Cosmos DB do utworzenia. Aby uzyskać więcej informacji, zobacz Interfejsy API w usłudze Azure Cosmos DB.
  • $consistencyPolicy, $maxStalenessIntervali $maxStalenessPrefix domyślny poziom spójności i ustawienia konta usługi Azure Cosmos DB. Aby uzyskać więcej informacji, zobacz Poziomy spójności w usłudze Azure Cosmos DB.

Konta usługi Azure Cosmos DB można skonfigurować za pomocą zapory IP, punktów końcowych usługi sieci wirtualnej i prywatnych punktów końcowych. Aby uzyskać informacje na temat konfigurowania zapory ip dla usługi Azure Cosmos DB, zobacz Konfigurowanie zapory adresów IP. Aby uzyskać informacje na temat włączania punktów końcowych usługi dla usługi Azure Cosmos DB, zobacz Konfigurowanie dostępu z sieci wirtualnych. Aby uzyskać informacje na temat włączania prywatnych punktów końcowych dla usługi Azure Cosmos DB, zobacz Konfigurowanie dostępu z prywatnych punktów końcowych.

Wyświetlanie listy wszystkich kont usługi Azure Cosmos DB w grupie zasobów

To polecenie wyświetla listę wszystkich kont usługi Azure Cosmos DB w grupie zasobów.

$resourceGroupName = "myResourceGroup"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName

Pobieranie właściwości konta usługi Azure Cosmos DB

To polecenie umożliwia uzyskanie właściwości istniejącego konta usługi Azure Cosmos DB.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName

Aktualizowanie konta usługi Azure Cosmos DB

To polecenie umożliwia aktualizowanie właściwości konta bazy danych usługi Azure Cosmos DB. Właściwości, które można zaktualizować, obejmują następujące elementy:

  • Dodawanie lub usuwanie regionów
  • Zmienianie domyślnych zasad spójności
  • Zmienianie filtru zakresu adresów IP
  • Zmienianie konfiguracji sieci wirtualnej
  • Włączanie zapisu w wielu regionach

Uwaga

Nie można jednocześnie dodawać ani usuwać regionów (locations) ani zmieniać innych właściwości konta usługi Azure Cosmos DB. Modyfikowanie regionów należy wykonać jako oddzielną operację od każdej innej zmiany konta.

Uwaga

To polecenie umożliwia dodawanie i usuwanie regionów, ale nie pozwala na modyfikowanie priorytetów trybu failover lub wyzwalanie ręcznego trybu failover. Zobacz Modyfikowanie priorytetu trybu failover i Wyzwalanie ręcznego przejścia w tryb failover.

Napiwek

Gdy dodawany jest nowy region, wszystkie dane muszą zostać w pełni zreplikowane i zatwierdzone w nowym regionie, zanim region zostanie oznaczony jako dostępny. Czas potrzebny na wykonanie tej operacji zależy od ilości danych przechowywanych na koncie. Jeśli trwa operacja skalowania przepływności asynchronicznej, operacja skalowania przepływności w górę zostanie wstrzymana i zostanie wznowiona automatycznie po zakończeniu operacji dodawania/usuwania regionu.

# Create account with two regions
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$apiKind = "Sql"
$consistencyLevel = "Session"
$enableAutomaticFailover = $true
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0

# Create the Azure Cosmos DB account
New-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -LocationObject $locations `
    -Name $accountName `
    -ApiKind $apiKind `
    -EnableAutomaticFailover:$enableAutomaticFailover `
    -DefaultConsistencyLevel $consistencyLevel

# Add a region to the account
$locationObject2 = @()
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 1 -IsZoneRedundant 0
$locationObject2 += New-AzCosmosDBLocationObject -LocationName "South Central US" -FailoverPriority 2 -IsZoneRedundant 0

Update-AzCosmosDBAccountRegion `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -LocationObject $locationObject2

Write-Host "Update-AzCosmosDBAccountRegion returns before the region update is complete."
Write-Host "Check account in Azure portal or using Get-AzCosmosDBAccount for region status."
Write-Host "When region was added, press any key to continue."
$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL
$HOST.UI.RawUI.Flushinputbuffer()

# Remove West US region from the account
$locationObject3 = @()
$locationObject3 += New-AzCosmosDBLocationObject -LocationName "East US" -FailoverPriority 0 -IsZoneRedundant 0
$locationObject3 += New-AzCosmosDBLocationObject -LocationName "South Central US" -FailoverPriority 1 -IsZoneRedundant 0

Update-AzCosmosDBAccountRegion `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -LocationObject $locationObject3

Write-Host "Update-AzCosmosDBAccountRegion returns before the region update is complete."
Write-Host "Check account in Azure portal or using Get-AzCosmosDBAccount for region status."

Włączanie wielu regionów zapisu dla konta usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$enableAutomaticFailover = $false
$enableMultiMaster = $true

# First disable service-managed failover - cannot have both service-managed
# failover and multi-region writes on an account
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableAutomaticFailover:$enableAutomaticFailover

# Now enable multi-region writes
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableMultipleWriteLocations:$enableMultiMaster

Usuwanie konta usługi Azure Cosmos DB

To polecenie usuwa istniejące konto usługi Azure Cosmos DB.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Remove-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -PassThru:$true

Aktualizowanie tagów konta usługi Azure Cosmos DB

To polecenie ustawia tagi zasobów platformy Azure dla konta usługi Azure Cosmos DB. Tagi można ustawiać zarówno podczas tworzenia konta, jak New-AzCosmosDBAccount i aktualizacji konta przy użyciu polecenia Update-AzCosmosDBAccount.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$tags = @{dept = "Finance"; environment = "Production";}

Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Tag $tags

Wyświetlanie listy kluczy kont

Podczas tworzenia konta usługi Azure Cosmos DB usługa generuje dwa podstawowe klucze dostępu, których można użyć do uwierzytelniania podczas uzyskiwania dostępu do konta usługi Azure Cosmos DB. Generowane są również klucze tylko do odczytu na potrzeby uwierzytelniania operacji tylko do odczytu. Udostępniając dwa klucze dostępu, usługa Azure Cosmos DB umożliwia ponowne generowanie i obracanie jednego klucza jednocześnie bez przerw w działaniu konta usługi Azure Cosmos DB. Konta usługi Azure Cosmos DB mają dwa klucze odczytu i zapisu (podstawowy i pomocniczy) oraz dwa klucze tylko do odczytu (podstawowy i pomocniczy).

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Type "Keys"

Wyświetlanie listy ciągów Połączenie ion

Następujące polecenie pobiera parametry połączenia, aby połączyć aplikacje z kontem usługi Azure Cosmos DB.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -Type "ConnectionStrings"

Ponowne generowanie kluczy kont

Klucze dostępu do konta usługi Azure Cosmos DB powinny być okresowo ponownie generowane, aby zapewnić bezpieczeństwo połączeń. Do konta są przypisywane podstawowe i pomocnicze klucze dostępu. Dzięki temu klienci mogą zachować dostęp podczas ponownego generowania jednego klucza. Istnieją cztery typy kluczy dla konta usługi Azure Cosmos DB (Primary, Secondary, PrimaryReadonly i SecondaryReadonly)

$resourceGroupName = "myResourceGroup" # Resource Group must already exist
$accountName = "mycosmosaccount" # Must be all lower case
$keyKind = "primary" # Other key kinds: secondary, primaryReadonly, secondaryReadonly

New-AzCosmosDBAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -KeyKind $keyKind

Włączanie trybu failover zarządzanego przez usługę

Następujące polecenie ustawia konto usługi Azure Cosmos DB w celu wykonania trybu failover zarządzanego przez usługę w regionie pomocniczym, jeśli region podstawowy stanie się niedostępny.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$enableAutomaticFailover = $true
$enableMultiMaster = $false

# First disable multi-region writes - cannot have both automatic
# failover and multi-region writes on an account
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableMultipleWriteLocations:$enableMultiMaster

# Now enable service-managed failover
Update-AzCosmosDBAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -EnableAutomaticFailover:$enableAutomaticFailover

Modyfikowanie priorytetu trybu failover

W przypadku kont skonfigurowanych przy użyciu trybu failover zarządzanego przez usługę można zmienić kolejność, w jakiej usługa Azure Cosmos DB podwyższy poziom replik pomocniczych do podstawowej, jeśli podstawowa stanie się niedostępna.

W poniższym przykładzie przyjęto założenie, że bieżący priorytet trybu failover to West US = 0, East US = 1, South Central US = 2. Polecenie zmieni to na West US = 0, South Central US = 1, East US = 2.

Uwaga

Zmiana lokalizacji dla failoverPriority=0 spowoduje wyzwolenie ręcznego przejścia w tryb failover dla konta usługi Azure Cosmos DB. Wszelkie inne zmiany priorytetów nie będą wyzwalać trybu failover.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$locations = @("West US", "South Central US", "East US") # Regions ordered by UPDATED failover priority

Update-AzCosmosDBAccountFailoverPriority `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -FailoverPolicy $locations

Wyzwalanie ręcznego przejścia w tryb failover

W przypadku kont skonfigurowanych przy użyciu ręcznego trybu failover można przejść w tryb failover i podwyższyć poziom dowolnej repliki pomocniczej do podstawowej, modyfikując element failoverPriority=0. Tej operacji można użyć do zainicjowania próbnego odzyskiwania po awarii w celu przetestowania planowania odzyskiwania po awarii.

W poniższym przykładzie załóżmy, że konto ma bieżący priorytet West US = 0 trybu failover i East US = 1 przerzuca regiony.

Uwaga

Zmiana locationName dla failoverPriority=0 spowoduje wyzwolenie ręcznego przejścia w tryb failover dla konta usługi Azure Cosmos DB. Każda inna zmiana priorytetu nie spowoduje wyzwolenia trybu failover.

Uwaga

Jeśli wykonasz ręczną operację trybu failover, gdy operacja skalowania przepływności asynchronicznej jest w toku, operacja skalowania przepływności zostanie wstrzymana. Zostanie ona wznowiona automatycznie po zakończeniu operacji trybu failover.

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$locations = @("East US", "West US") # Regions ordered by UPDATED failover priority

Update-AzCosmosDBAccountFailoverPriority `
    -ResourceGroupName $resourceGroupName `
    -Name $accountName `
    -FailoverPolicy $locations

Wyświetlanie listy blokad zasobów na koncie usługi Azure Cosmos DB

Blokady zasobów można umieszczać w zasobach usługi Azure Cosmos DB, w tym w bazach danych i kolekcjach. W poniższym przykładzie pokazano, jak wyświetlić listę wszystkich blokad zasobów platformy Azure na koncie usługi Azure Cosmos DB.

$resourceGroupName = "myResourceGroup"
$resourceTypeAccount = "Microsoft.DocumentDB/databaseAccounts"
$accountName = "mycosmosaccount"

Get-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceTypeAccount `
    -ResourceName $accountName

Baza danych usługi Azure Cosmos DB

W poniższych sekcjach pokazano, jak zarządzać bazą danych usługi Azure Cosmos DB, w tym:

Tworzenie bazy danych usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

New-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

Tworzenie bazy danych usługi Azure Cosmos DB z udostępnioną przepływnością

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$databaseRUs = 400

New-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName `
    -Throughput $databaseRUs

Uzyskiwanie przepływności bazy danych usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlDatabaseThroughput `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

Migrowanie przepływności bazy danych do automatycznego skalowania

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Invoke-AzCosmosDBSqlDatabaseThroughputMigration `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName `
    -ThroughputType Autoscale

Pobieranie wszystkich baz danych usługi Azure Cosmos DB na koncie

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"

Get-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName

Uzyskiwanie pojedynczej bazy danych usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

Usuwanie bazy danych usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Remove-AzCosmosDBSqlDatabase `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -Name $databaseName

Tworzenie blokady zasobów w bazie danych usługi Azure Cosmos DB, aby zapobiec usunięciu

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$resourceName = "$accountName/$databaseName"
$lockName = "myResourceLock"
$lockLevel = "CanNotDelete"

New-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName `
    -LockLevel $lockLevel

Usuwanie blokady zasobów w bazie danych usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$resourceName = "$accountName/$databaseName"
$lockName = "myResourceLock"

Remove-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName

Kontener usługi Azure Cosmos DB

W poniższych sekcjach pokazano, jak zarządzać kontenerem usługi Azure Cosmos DB, w tym:

Tworzenie kontenera usługi Azure Cosmos DB

# Create an Azure Cosmos DB container with default indexes and throughput at 400 RU
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$throughput = 400 #minimum = 400

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -Throughput $throughput

Tworzenie kontenera usługi Azure Cosmos DB z autoskalowaniem

# Create an Azure Cosmos DB container with default indexes and autoscale throughput at 4000 RU
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$autoscaleMaxThroughput = 4000 #minimum = 4000

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -AutoscaleMaxThroughput $autoscaleMaxThroughput

Tworzenie kontenera usługi Azure Cosmos DB o dużym rozmiarze klucza partycji

# Create an Azure Cosmos DB container with a large partition key value (version = 2)
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -PartitionKeyVersion 2

Uzyskiwanie przepływności kontenera usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Get-AzCosmosDBSqlContainerThroughput `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

Migrowanie przepływności kontenera do automatycznego skalowania

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Invoke-AzCosmosDBSqlContainerThroughputMigration `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -ThroughputType Autoscale

Tworzenie kontenera usługi Azure Cosmos DB z niestandardowymi zasadami indeksu

# Create a container with a custom indexing policy
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$indexPathIncluded = "/*"
$indexPathExcluded = "/myExcludedPath/*"

$includedPathIndex = New-AzCosmosDBSqlIncludedPathIndex -DataType String -Kind Range
$includedPath = New-AzCosmosDBSqlIncludedPath -Path $indexPathIncluded -Index $includedPathIndex

$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
    -IncludedPath $includedPath `
    -ExcludedPath $indexPathExcluded `
    -IndexingMode Consistent `
    -Automatic $true

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -IndexingPolicy $indexingPolicy

Tworzenie kontenera usługi Azure Cosmos DB z wyłączonym indeksowaniem

# Create an Azure Cosmos DB container with no indexing
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"

$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
    -IndexingMode None

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -IndexingPolicy $indexingPolicy

Tworzenie kontenera usługi Azure Cosmos DB przy użyciu unikatowych zasad klucza i czasu wygaśnięcia

# Create a container with a unique key policy and TTL of one day
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$uniqueKeyPath = "/myUniqueKeyPath"
$ttlInSeconds = 86400 # Set this to -1 (or don't use it at all) to never expire

$uniqueKey = New-AzCosmosDBSqlUniqueKey `
    -Path $uniqueKeyPath

$uniqueKeyPolicy = New-AzCosmosDBSqlUniqueKeyPolicy `
    -UniqueKey $uniqueKey

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -UniqueKeyPolicy $uniqueKeyPolicy `
    -TtlInSeconds $ttlInSeconds

Tworzenie kontenera usługi Azure Cosmos DB z rozwiązaniem konfliktów

Aby zapisać wszystkie konflikty w pliku ConflictsFeed i obsługiwać je oddzielnie, przekaż polecenie -Type "Custom" -Path "".

# Create container with last-writer-wins conflict resolution policy
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$conflictResolutionPath = "/myResolutionPath"

$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
    -Type LastWriterWins `
    -Path $conflictResolutionPath

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -ConflictResolutionPolicy $conflictResolutionPolicy

Aby utworzyć zasady rozwiązywania konfliktów, aby użyć procedury składowanej, wywołaj New-AzCosmosDBSqlConflictResolutionPolicy i przekaż parametry -Type oraz -ConflictResolutionProcedure.

# Create container with custom conflict resolution policy using a stored procedure
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$partitionKeyPath = "/myPartitionKey"
$conflictResolutionSprocName = "mysproc"

$conflictResolutionSproc = "/dbs/$databaseName/colls/$containerName/sprocs/$conflictResolutionSprocName"

$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
    -Type Custom `
    -ConflictResolutionProcedure $conflictResolutionSproc

New-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName `
    -PartitionKeyKind Hash `
    -PartitionKeyPath $partitionKeyPath `
    -ConflictResolutionPolicy $conflictResolutionPolicy

Wyświetlanie listy wszystkich kontenerów usługi Azure Cosmos DB w bazie danych

# List all Azure Cosmos DB containers in a database
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"

Get-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName

Pobieranie pojedynczego kontenera usługi Azure Cosmos DB w bazie danych

# Get a single Azure Cosmos DB container in a database
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Get-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

Usuwanie kontenera usługi Azure Cosmos DB

# Delete an Azure Cosmos DB container
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"

Remove-AzCosmosDBSqlContainer `
    -ResourceGroupName $resourceGroupName `
    -AccountName $accountName `
    -DatabaseName $databaseName `
    -Name $containerName

Tworzenie blokady zasobów w kontenerze usługi Azure Cosmos DB, aby zapobiec usunięciu

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$resourceName = "$accountName/$databaseName/$containerName"
$lockName = "myResourceLock"
$lockLevel = "CanNotDelete"

New-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName `
    -LockLevel $lockLevel

Usuwanie blokady zasobów w kontenerze usługi Azure Cosmos DB

$resourceGroupName = "myResourceGroup"
$resourceType = "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
$resourceName = "$accountName/$databaseName/$containerName"
$lockName = "myResourceLock"

Remove-AzResourceLock `
    -ResourceGroupName $resourceGroupName `
    -ResourceType $resourceType `
    -ResourceName $resourceName `
    -LockName $lockName

Następne kroki