我正在使用PowerShell在CI流程中创建主要设置CosmosDB数据库RU的成本管理脚本。
当前代码可用于创建新数据库和设置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代码设置启动时允许的最小默认值-但还需要能够根据Production的要求调整为更高的值。
Powershell更新非常慢,因此我希望在不需要CI的情况下消除更新。我目前正在使用以下代码来设置静态值-如果添加了更多容器并且静态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函数来返回当前数据库的吞吐量。如果未设置数据库吞吐量,则应返回错误。
答案 0 :(得分:0)
使用Azure CLI,您应该能够在CosmosDB帐户中读取给定数据库和容器的现有吞吐量。
其他文档参考-
Scale Azure CosmosDB container Throughput using Azure CLI PowerShell Module for working with AzureCosmosDB
希望这会有所帮助