azure - 如何查询 Azure CosmosDB 数据库和容器的吞吐量设置?
问题描述
我正在使用 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 代码在启动时设置最小允许的默认值 - 但还需要能够根据生产需要调整更高的值。
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 函数。如果未设置数据库吞吐量,则应返回错误。
解决方案
使用 Azure CLI,您应该能够使用 CosmosDB 帐户读取给定数据库和容器的现有吞吐量。
附加文档参考 -
使用 Azure CLI PowerShell 模块扩展 Azure CosmosDB 容器吞吐量以使用 AzureCosmosDB
希望这可以帮助
推荐阅读
- javascript - 无法使用 javscript 读取发布请求响应
- ios - JWPlayer - 点击播放解释为 iOS Safari/Chrome 上的自动播放
- python - 有没有办法以编程方式确认 python 包版本满足需求说明符?
- database - 当整个表被删除sql锁定时,oracle是否允许在表上选择
- c# - 不同情况下使用 DbSet 加入列表的最佳方式
- javascript - 如何在javascript中将数组更改为json对象
- datetime - 弹性搜索 2.0 嵌套 2.0 日期时间月搜索
- python - 使用多处理,如何在每个 CPU 内 Apply()
- android - 在 android 中,想要在 Firebase 中停止自动屏幕跟踪并使其自定义
- postgresql - 如何选择日期范围*和*该范围之前和之后的条目?