Gerenciar recursos do Azure Cosmos DB para NoSQL usando o PowerShell

APLICA-SE A: NoSQL

O guia a seguir descreve como usar o PowerShell para criar scripts e automatizar o gerenciamento de recursos do Azure Cosmos DB para NoSQL, incluindo a conta, o banco de dados, o contêiner e a taxa de transferência do Azure Cosmos DB. Para cmdlets do PowerShell para outras APIs, consulte Exemplos do PowerShell para Cassandra, Exemplos do PowerShell para API para MongoDB, Exemplos do PowerShell para Gremlin, Exemplos do PowerShell para Tabela

Nota

Os exemplos neste artigo usam cmdlets de gerenciamento Az.CosmosDB . Consulte a página de referência da API Az.CosmosDB para obter as alterações mais recentes.

Para o gerenciamento entre plataformas do Azure Cosmos DB, você pode usar os cmdlets e com o PowerShell entre plataformas, bem como a CLI do Azure, a API REST ou o portal do Azure.AzAz.CosmosDB

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Introdução

Siga as instruções em Como instalar e configurar o Azure PowerShell para instalar e entrar em sua conta do Azure no PowerShell.

Importante

Os recursos do Azure Cosmos DB não podem ser renomeados, pois isso viola como o Azure Resource Manager funciona com URIs de recursos.

Contas do Azure Cosmos DB

As seções a seguir demonstram como gerenciar a conta do Azure Cosmos DB, incluindo:

Criar uma conta do Azure Cosmos DB

Este comando cria uma conta de banco de dados do Azure Cosmos DB com várias regiões, failover gerenciado por serviço e política de consistência de atraso limitado.

$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 O grupo de recursos do Azure no qual implantar a conta do Azure Cosmos DB. Já deve existir.
  • $locations As regiões para a conta de banco de dados, a região com FailoverPriority 0 é a região de gravação.
  • $accountName O nome da conta do Azure Cosmos DB. Deve ser único, minúsculo, incluir apenas caracteres alfanuméricos e '-', e entre 3 e 31 caracteres de comprimento.
  • $apiKind O tipo de conta do Azure Cosmos DB a ser criada. Para obter mais informações, consulte APIs no Azure Cosmos DB.
  • $consistencyPolicy, $maxStalenessIntervale $maxStalenessPrefix O nível de consistência padrão e as configurações da conta do Azure Cosmos DB. Para obter mais informações, consulte Níveis de consistência no Azure Cosmos DB.

As contas do Azure Cosmos DB podem ser configuradas com Firewall IP, pontos de extremidade de serviço de Rede Virtual e pontos de extremidade privados. Para obter informações sobre como configurar o Firewall IP para o Azure Cosmos DB, consulte Configurar o Firewall IP. Para obter informações sobre como habilitar pontos de extremidade de serviço para o Azure Cosmos DB, consulte Configurar o acesso de redes virtuais. Para obter informações sobre como habilitar pontos de extremidade privados para o Azure Cosmos DB, consulte Configurar o acesso de pontos de extremidade privados.

Listar todas as contas do Azure Cosmos DB em um Grupo de Recursos

Este comando lista todas as contas do Azure Cosmos DB em um Grupo de Recursos.

$resourceGroupName = "myResourceGroup"

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName

Obter as propriedades de uma conta do Azure Cosmos DB

Este comando permite obter as propriedades de uma conta existente do Azure Cosmos DB.

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

Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName

Atualizar uma conta do Azure Cosmos DB

Este comando permite que você atualize as propriedades da conta de banco de dados do Azure Cosmos DB. As propriedades que podem ser atualizadas incluem o seguinte:

  • Adicionar ou remover regiões
  • Alterando a política de consistência padrão
  • Alterando o filtro de intervalo IP
  • Alterando configurações de rede virtual
  • Habilitando gravações em várias regiões

Nota

Não é possível adicionar ou remover simultaneamente regiões (locations) e alterar outras propriedades de uma conta do Azure Cosmos DB. A modificação de regiões deve ser executada como uma operação separada de qualquer outra alteração na conta.

Nota

Este comando permite adicionar e remover regiões, mas não permite modificar prioridades de failover ou acionar um failover manual. Consulte Modificar prioridade de failover e Acionar failover manual.

Gorjeta

Quando é adicionada uma nova região, todos os dados têm de estar totalmente replicados e consolidados na nova região antes desta ser marcada como disponível. O tempo que esta operação demora dependerá da quantidade de dados armazenados na conta. Se uma operação de dimensionamento assíncrono de taxa de transferência estiver em andamento, a operação de expansão de taxa de transferência será pausada e retomada automaticamente quando a operação de adicionar/remover região for concluída.

# 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."

Habilitar várias regiões de gravação para uma conta do 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

Excluir uma conta do Azure Cosmos DB

Este comando exclui uma conta existente do Azure Cosmos DB.

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

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

Atualizar tags de uma conta do Azure Cosmos DB

Este comando define as marcas de recursos do Azure para uma conta do Azure Cosmos DB. As tags podem ser definidas tanto na criação da conta usando New-AzCosmosDBAccount quanto na atualização da conta usando Update-AzCosmosDBAccounto .

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

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

Listar chaves de conta

Quando você cria uma conta do Azure Cosmos DB, o serviço gera duas chaves de acesso primárias que podem ser usadas para autenticação quando a conta do Azure Cosmos DB é acessada. Chaves somente leitura para autenticar operações somente leitura também são geradas. Ao fornecer duas chaves de acesso, o Azure Cosmos DB permite que você regenere e gire uma chave de cada vez sem interrupção na sua conta do Azure Cosmos DB. As contas do Azure Cosmos DB têm duas chaves de leitura-gravação (primária e secundária) e duas chaves somente leitura (primária e secundária).

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

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

Listar cadeias de conexão

O comando a seguir recupera cadeias de conexão para conectar aplicativos à conta do Azure Cosmos DB.

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

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

Regenerar chaves de conta

As chaves de acesso a uma conta do Azure Cosmos DB devem ser regeneradas periodicamente para ajudar a manter as conexões seguras. As chaves de acesso primária e secundária são atribuídas à conta. Isso permite que os clientes mantenham o acesso enquanto uma chave de cada vez é regenerada. Há quatro tipos de chaves para uma conta do Azure Cosmos DB (Primary, Secondary, PrimaryReadonly e 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

Habilitar failover gerenciado por serviço

O comando a seguir define uma conta do Azure Cosmos DB para executar um failover gerenciado por serviço para sua região secundária caso a região primária fique indisponível.

$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

Modificar prioridade de failover

Para contas configuradas com Failover Gerenciado por Serviço, você pode alterar a ordem na qual o Azure Cosmos DB promoverá réplicas secundárias para primárias caso a primária fique indisponível.

Para o exemplo abaixo, suponha que a prioridade de failover atual seja West US = 0, East US = 1, South Central US = 2. O comando mudará para West US = 0, South Central US = 1, East US = 2.

Atenção

Alterar o local para failoverPriority=0 acionará um failover manual para uma conta do Azure Cosmos DB. Quaisquer outras alterações de prioridade não acionarão um 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

Failover manual de gatilho

Para contas configuradas com failover manual, você pode fazer failover e promover qualquer réplica secundária para primária modificando para failoverPriority=0. Essa operação pode ser usada para iniciar um exercício de recuperação de desastres para testar o planejamento de recuperação de desastres.

Para o exemplo abaixo, suponha que a conta tenha uma prioridade de failover atual de West US = 0 e East US = 1 inverta as regiões.

Atenção

Alterar locationName para failoverPriority=0 acionará um failover manual para uma conta do Azure Cosmos DB. Qualquer outra alteração de prioridade não desencadeará um failover.

Nota

Se você executar uma operação de failover manual enquanto uma operação de dimensionamento assíncrono de taxa de transferência estiver em andamento, a operação de expansão de taxa de transferência será pausada. Ele será retomado automaticamente quando a operação de failover for concluída.

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

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

Listar bloqueios de recursos em uma conta do Azure Cosmos DB

Os bloqueios de recursos podem ser colocados em recursos do Azure Cosmos DB, incluindo bancos de dados e coleções. O exemplo abaixo mostra como listar todos os bloqueios de recursos do Azure em uma conta do Azure Cosmos DB.

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

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

Banco de Dados do Azure Cosmos DB

As seções a seguir demonstram como gerenciar o banco de dados do Azure Cosmos DB, incluindo:

Criar uma base de dados do Azure Cosmos DB

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

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

Criar um banco de dados do Azure Cosmos DB com taxa de transferência compartilhada

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

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

Obter a taxa de transferência de um banco de dados do Azure Cosmos DB

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

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

Migrar a taxa de transferência do banco de dados para o dimensionamento automático

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

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

Obter todos os bancos de dados do Azure Cosmos DB em uma conta

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

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

Obter um único banco de dados do Azure Cosmos DB

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

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

Excluir um banco de dados do Azure Cosmos DB

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

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

Criar um bloqueio de recursos em um banco de dados do Azure Cosmos DB para impedir a exclusão

$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

Remover um bloqueio de recursos em um banco de dados do 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

Contêiner do Azure Cosmos DB

As seções a seguir demonstram como gerenciar o contêiner do Azure Cosmos DB, incluindo:

Criar um contêiner do 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

Criar um contêiner do Azure Cosmos DB com dimensionamento automático

# 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

Criar um contêiner do Azure Cosmos DB com um tamanho de chave de partição grande

# 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

Obter a taxa de transferência de um contêiner do Azure Cosmos DB

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

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

Migrar a taxa de transferência do contêiner para o dimensionamento automático

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

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

Criar um contêiner do Azure Cosmos DB com política de índice personalizada

# 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

Criar um contêiner do Azure Cosmos DB com a indexação desativada

# 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

Criar um contêiner do Azure Cosmos DB com política de chave exclusiva e TTL

# 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

Criar um contêiner do Azure Cosmos DB com resolução de conflitos

Para gravar todos os conflitos no ConflictsFeed e lidar separadamente, passe -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

Para criar uma política de resolução de conflitos para usar um procedimento armazenado, chamar New-AzCosmosDBSqlConflictResolutionPolicy e passar parâmetros -Type e -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

Listar todos os contêineres do Azure Cosmos DB em um banco de dados

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

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

Obter um único contêiner do Azure Cosmos DB em um banco de dados

# 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

Excluir um contêiner do 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

Criar um bloqueio de recursos em um contêiner do Azure Cosmos DB para impedir a exclusão

$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

Remover um bloqueio de recurso em um contêiner do 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

Próximos passos