Управление ресурсами Azure Cosmos DB для NoSQL с помощью PowerShell
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
В следующем руководстве описывается, как использовать PowerShell для сценариев и автоматизации управления ресурсами Azure Cosmos DB для NoSQL, включая учетную запись Azure Cosmos DB, базу данных, контейнер и пропускную способность. Командлеты PowerShell для других API см. в примерах PowerShell для Cassandra, примерах PowerShell для API для MongoDB, примерах PowerShell для Gremlin, примерах PowerShell для таблицы
Примечание.
В примерах этой статьи используются командлеты управления Az.CosmosDB. Сведения о последних изменениях см. на странице справочника по API Az.CosmosDB.
Для управления ресурсами Azure Cosmos DB на нескольких платформах можно использовать командлеты Az
и Az.CosmosDB
в кроссплатформенном средстве PowerShell, а также Azure CLI, REST API или портал Azure.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Начало работы
Следуйте инструкциям из статьи об установке и настройке Azure PowerShell, чтобы установить средство PowerShell и войти через него в учетную запись Azure.
Внимание
Ресурсы Azure Cosmos DB нельзя переименовывать, так как это нарушит конвенции работы Azure Resource Manager с URI ресурсов.
Учетные записи Azure Cosmos DB
В следующих разделах показано, как управлять учетной записью Azure Cosmos DB, в том числе:
- Создание учетной записи Azure Cosmos DB
- Обновление учетной записи Azure Cosmos DB
- Вывод списка всех учетных записей Azure Cosmos DB в подписке
- Получение учетной записи Azure Cosmos DB
- Удаление учетной записи Azure Cosmos DB
- Обновление тегов для учетной записи Azure Cosmos DB
- Изменение приоритета отработки отказа для учетной записи Azure Cosmos DB
- Активация отработки отказа вручную для учетной записи Azure Cosmos DB
- вывод списка блокировок ресурсов в учетной записи Azure Cosmos DB.
Создание учетной записи Azure Cosmos DB
Эта команда создает учетную запись базы данных Azure Cosmos DB с поддержкой множества регионов, управляемого службой перехода на другой ресурс и политики согласованности с ограниченным устареванием.
$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
Группа ресурсов Azure, в которую необходимо развернуть учетную запись Azure Cosmos DB. Этот ресурс должен уже существовать.$locations
— регионы для учетной записи базы данных, гдеFailoverPriority 0
обозначает регион для записи.$accountName
Имя учетной записи Azure Cosmos DB. Имя должно быть уникальным, состоять из букв нижнего регистра, содержать только буквенно-цифровые символы и символ "-", а также иметь длину от 3 до 31 символа.$apiKind
Тип создаваемой учетной записи Azure Cosmos DB. Дополнительные сведения см. в API в Azure Cosmos DB.$consistencyPolicy
,$maxStalenessInterval
и$maxStalenessPrefix
уровень согласованности по умолчанию и параметры учетной записи Azure Cosmos DB. Дополнительные сведения см. в статье о настраиваемых уровнях согласованности в Azure Cosmos DB.
Учетные записи Azure Cosmos DB можно настроить с помощью брандмауэра IP, виртуальная сеть конечных точек службы и частных конечных точек. Сведения о настройке брандмауэра IP-адресов для Azure Cosmos DB см. в этой статье. Сведения о включении конечных точек службы для Azure Cosmos DB см. в статье Настройка доступа из виртуальных сетей. Сведения о включении частных конечных точек для Azure Cosmos DB см. в статье Настройка доступа из частных конечных точек.
Вывод списка всех учетных записей Azure Cosmos DB в группе ресурсов
Эта команда содержит все учетные записи Azure Cosmos DB в группе ресурсов.
$resourceGroupName = "myResourceGroup"
Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName
Получение свойств учетной записи Azure Cosmos DB
Эта команда позволяет получить свойства существующей учетной записи Azure Cosmos DB.
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName
Обновление учетной записи Azure Cosmos DB
Эта команда позволяет обновить свойства учетной записи базы данных Azure Cosmos DB. В контексте свойств можно выполнить такие изменения:
- добавление или удаление регионов;
- изменение политики согласованности по умолчанию;
- изменение фильтра диапазона IP-адресов;
- изменение конфигурации виртуальной сети;
- настройка записи в несколько регионов.
Примечание.
Вы не можете одновременно добавлять или удалять регионы (locations
) и изменять другие свойства для учетной записи Azure Cosmos DB. Изменение регионов нужно выполнять как отдельную операцию, не объединяя ее с другими изменениями в учетной записи.
Примечание.
Кроме того, эта команда позволяет добавлять или удалять регионы, но не изменять приоритеты при отработке отказа или активировать отработку отказа вручную. Подробнее см. разделы об изменении приоритетов при отработке отказа и об активации отработки отказа вручную.
Совет
При добавлении нового региона все данные должны быть полностью реплицированы и зафиксированы в новом регионе, прежде чем регион будет помечен как доступный. Продолжительность операции зависит от объема данных, хранящихся в учетной записи. Если выполняется операция асинхронного масштабирования пропускной способности, увеличение масштаба пропускной способности будет приостановлено и автоматически возобновится после завершения операции добавления или удаления региона.
# 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."
Включение нескольких регионов записи для учетной записи 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
Удаление учетной записи Azure Cosmos DB
Эта команда удаляет существующую учетную запись Azure Cosmos DB.
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
Remove-AzCosmosDBAccount `
-ResourceGroupName $resourceGroupName `
-Name $accountName `
-PassThru:$true
Обновление тегов учетной записи Azure Cosmos DB
Эта команда задает теги ресурсов Azure для учетной записи Azure Cosmos DB. Теги можно задать при создании учетной записи с помощью New-AzCosmosDBAccount
, а также при обновлении учетной записи с помощью Update-AzCosmosDBAccount
.
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$tags = @{dept = "Finance"; environment = "Production";}
Update-AzCosmosDBAccount `
-ResourceGroupName $resourceGroupName `
-Name $accountName `
-Tag $tags
Включение отработки отказа под управлением службы
Следующая команда задает учетную запись Azure Cosmos DB для выполнения отработки отказа, управляемой службой, в дополнительный регион, если основной регион станет недоступным.
$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
Изменение приоритета при отработке отказа
Для учетных записей, настроенных с помощью отработки отказа, управляемой службой, можно изменить порядок, в котором Azure Cosmos DB будет продвигать вторичные реплики на первичные, если основной станет недоступным.
В приведенном ниже примере предполагается текущий приоритет для отработки отказа: West US = 0
, East US = 1
, South Central US = 2
. Эта команда изменит его на West US = 0
, South Central US = 1
, East US = 2
.
Внимание
Изменение расположения для failoverPriority=0
активации отработки отказа вручную для учетной записи Azure Cosmos DB. Любые другие изменения приоритета не приведут к активации отработки отказа.
$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
Активация отработки отказа вручную
Для учетных записей, где настроена отработка отказа вручную, можно выполнить отработку отказа и повысить уровень вторичной реплики до первичной, изменив failoverPriority=0
. Эту операцию можно использовать для инициации отработки аварийного восстановления, чтобы протестировать план аварийного восстановления.
В примере ниже предполагается, что учетная запись имеет приоритет West US = 0
и East US = 1
при отработке отказа, а затем регионы меняются.
Внимание
failoverPriority=0
Изменение locationName
для активации отработки отказа вручную для учетной записи Azure Cosmos DB. Любые другие изменения приоритета не приведут к активации отработки отказа.
Примечание.
Если выполнить переход на другой ресурс вручную во время асинхронного масштабирования пропускной способности, операция масштабирования пропускной способности будет приостановлена. Она будет автоматически возобновлена после завершения операции отработки отказа.
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$locations = @("East US", "West US") # Regions ordered by UPDATED failover priority
Update-AzCosmosDBAccountFailoverPriority `
-ResourceGroupName $resourceGroupName `
-Name $accountName `
-FailoverPolicy $locations
Вывод списка блокировок ресурсов в учетной записи Azure Cosmos DB
Блокировки ресурсов можно применять к ресурсам Azure Cosmos DB, включая базы данных и коллекции. В примере ниже показано, как вывести список всех блокировок ресурсов Azure в учетной записи Azure Cosmos DB.
$resourceGroupName = "myResourceGroup"
$resourceTypeAccount = "Microsoft.DocumentDB/databaseAccounts"
$accountName = "mycosmosaccount"
Get-AzResourceLock `
-ResourceGroupName $resourceGroupName `
-ResourceType $resourceTypeAccount `
-ResourceName $accountName
База данных Azure Cosmos DB
В следующих разделах описано управление базой данных Azure Cosmos DB, включая:
- создание базы данных Azure Cosmos DB;
- создание базы данных Azure Cosmos DB с общей пропускной способностью;
- получение сведений о пропускной способности для базы данных Azure Cosmos DB;
- переход на автомасштабирование пропускной способности базы данных;
- вывод списка всех баз данных Azure Cosmos DB в учетной записи;
- получение сведений об одной базе данных Azure Cosmos DB;
- удаление базы данных Azure Cosmos DB.
- создание блокировки ресурса в базе данных Azure Cosmos DB для предотвращения удаления;
- снятие блокировки ресурса в базе данных Azure Cosmos DB.
Создание базы данных Azure Cosmos DB
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
New-AzCosmosDBSqlDatabase `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName
Создание базы данных Azure Cosmos DB с общей пропускной способностью
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$databaseRUs = 400
New-AzCosmosDBSqlDatabase `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName `
-Throughput $databaseRUs
Получение сведений о пропускной способности для базы данных Azure Cosmos DB
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
Get-AzCosmosDBSqlDatabaseThroughput `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName
Переход на автомасштабирование пропускной способности базы данных
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
Invoke-AzCosmosDBSqlDatabaseThroughputMigration `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName `
-ThroughputType Autoscale
Вывод списка всех баз данных Azure Cosmos DB в учетной записи
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
Get-AzCosmosDBSqlDatabase `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName
Получение сведений об одной базе данных Azure Cosmos DB
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
Get-AzCosmosDBSqlDatabase `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName
Удаление базы данных Azure Cosmos DB
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
Remove-AzCosmosDBSqlDatabase `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-Name $databaseName
Создание блокировки ресурса в базе данных Azure Cosmos DB для предотвращения удаления
$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
Снятие блокировки ресурса в базе данных 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
Контейнер Azure Cosmos DB
В следующих разделах описаны процедуры управления контейнером Azure Cosmos DB, включая:
- Создание контейнера Azure Cosmos DB
- создание контейнера Azure Cosmos DB с возможностью автомасштабирования;
- создание контейнера Azure Cosmos DB с ключом большого раздела;
- получение сведений о пропускной способности контейнера Azure Cosmos DB;
- переход на автомасштабирование пропускной способности контейнера;
- создание контейнера Azure Cosmos DB с настраиваемой индексацией;
- создание контейнера Azure Cosmos DB с выключенной индексацией;
- создание контейнера Azure Cosmos DB с уникальным ключом и сроком жизни;
- создание контейнера Azure Cosmos DB с разрешением конфликтов;
- вывод списка всех контейнеров Azure Cosmos DB в базе данных;
- получение сведений об одном контейнере Azure Cosmos DB в базе данных;
- удаление контейнера Azure Cosmos DB.
- создание блокировки ресурса в контейнере Azure Cosmos DB для предотвращения удаления;
- снятие блокировки ресурса в контейнере Azure Cosmos DB.
Создание контейнера 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
Создание контейнера Azure Cosmos DB с возможностью автомасштабирования
# 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
Создание контейнера Azure Cosmos DB с ключом большого раздела
# 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
Получение сведений о пропускной способности контейнера Azure Cosmos DB
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
Get-AzCosmosDBSqlContainerThroughput `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-DatabaseName $databaseName `
-Name $containerName
Переход на автомасштабирование пропускной способности контейнера
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
$containerName = "myContainer"
Invoke-AzCosmosDBSqlContainerThroughputMigration `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-DatabaseName $databaseName `
-Name $containerName `
-ThroughputType Autoscale
Создание контейнера Azure Cosmos DB с настраиваемой политикой индексации
# 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
Создание контейнера Azure Cosmos DB с выключенной индексацией
# 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
Создание контейнера Azure Cosmos DB с политикой создания уникального ключа и сроком жизни
# 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
Создание контейнера Azure Cosmos DB с разрешением конфликтов
Для записи всех конфликтов в канал ConflictsFeed и их отдельной обработки передайте параметр -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
Чтобы создать политику разрешения конфликтов для использования хранимой процедуры, вызовите New-AzCosmosDBSqlConflictResolutionPolicy
и передайте параметры -Type
и -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
Вывод списка всех контейнеров Azure Cosmos DB в базе данных
# List all Azure Cosmos DB containers in a database
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$databaseName = "myDatabase"
Get-AzCosmosDBSqlContainer `
-ResourceGroupName $resourceGroupName `
-AccountName $accountName `
-DatabaseName $databaseName
Получение сведений об одном контейнере Azure Cosmos DB в базе данных
# 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
Удаление контейнера 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
Создание блокировки ресурса в контейнере Azure Cosmos DB для предотвращения удаления
$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
Снятие блокировки ресурса в контейнере 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