Я работаю над созданием сценариев управления затратами, устанавливающих в первую очередь RU базы данных CosmosDB в нашем процессе CI с использованием PowerShell.
Текущий код работает для создания новых баз данных и установки RU
$resourceGroupName = "rg-01"
$accountName = "cosmos-01"
$databaseName = "db1"
$resourceName = $accountName + "/sql/" + $databaseName
$DataBaseProperties = @{
"resource"=@{ "id"=$databaseName };
"options"=@{ "Throughput"="500" }
}
New-AzureRMResource -ResourceType "Microsoft.DocumentDb/databaseAccounts/apis/databases" `
-ApiVersion "2015-04-08" -ResourceGroupName $resourceGroupName `
-Name $resourceName -PropertyObject $DataBaseProperties -Force
Контейнеры затем создаются с:
$containerName = "container1"
$resourceName = $accountName + "/sql/" + $databaseName + "/" + $containerName
$ContainerProperties = @{
"resource"=@{
"id"=$containerName;
"partitionKey"=@{
"paths"=@("/CompanyName");
"kind"="Hash"
}
};
"options"=@{}
}
New-AzureRMResource -ResourceType "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers" `
-ApiVersion "2015-04-08" -ResourceGroupName $resourceGroupName `
-Name $resourceName -PropertyObject $ContainerProperties -Force
Я хочу иметь возможность запросить текущую настройку пропускной способности RU перед внесением изменений, но я не уверен, как запрашивать и / или перемещаться по -PropertyObject.
Мы используем CosmosDB для кэширования значений конфигурации и больших возвращаемых объектов json, которые могут быть воссозданы по мере необходимости. В настоящее время мы работаем над тем, чтобы установить минимально допустимые значения по умолчанию при запуске с помощью кода .NetCore, но также необходимо иметь возможность настраиваться на более высокие значения, если это требуется для производства.
Обновления Powershell очень медленные, поэтому я стараюсь не обновлять их во время КИ, если это не требуется. В настоящее время я использую следующий код для установки статических значений - что приведет к ошибке, если будут добавлены дополнительные контейнеры, а статические RU слишком малы для нового количества контейнеров. Я хочу сначала запросить значение, а затем продолжить при необходимости изменения.
$resourceGroupName = "RG-01"
$accountName = "cosmos-01"
$updateResource = "database" # or "container"
#$updateResource = "container"
Write-Warning "Set Cache Throughput"
$throughput = 1700
$databaseName = "db1"
$properties = @{
"resource"=@{"throughput"=$throughput}
}
$databaseResourceName = $accountName + "/sql/" + $databaseName + "/throughput"
Set-AzureRMResource -ResourceType "Microsoft.DocumentDb/databaseAccounts/apis/databases/settings" -ApiVersion "2015-04-08" -ResourceGroupName $resourceGroupName -Name $databaseResourceName -PropertyObject $properties -Force
Write-Warning "Set DB Throughput"
$throughput = 500
$databaseName = "flight"
$properties = @{
"resource"=@{"throughput"=$throughput}
}
$databaseResourceName = $accountName + "/sql/" + $databaseName + "/throughput"
Set-AzureRMResource -ResourceType "Microsoft.DocumentDb/databaseAccounts/apis/databases/settings" -ApiVersion "2015-04-08" -ResourceGroupName $resourceGroupName -Name $databaseResourceName -PropertyObject $properties -Force
Я хотел бы создать, чтобы создать функцию get-cosmosDatabaseThroughput, возвращающую текущую пропускную способность базы данных. Если пропускная способность базы данных не установлена, должна быть возвращена ошибка.