能否通过ARM模板将Cosmos DB容器从手动吞吐量切换为自动缩放模式
Cosmos DB ARM模板切换吞吐量模式的实现说明
完全可以通过ARM模板将Cosmos DB容器的吞吐量从手动模式切换为自动缩放模式,你之前的配置部署后仍为手动模式,核心是存在三处配置问题。
原有配置的问题根源
- 字段配置冲突:Cosmos DB的
throughputSettings资源中,手动吞吐对应的throughput字段和自动缩放对应的autoscaleSettings字段是严格互斥的。你在同一个resource块中同时写入了两个字段,ARM部署时会优先识别手动模式的配置,直接忽略自动缩放的相关设置,最终自然保持手动模式。 - 配置值不符合规范:你设置的自动缩放最大吞吐量为800000 TU,远超出绝大多数Azure订阅的默认配额上限,即使去掉冲突字段,该值也会触发部署校验失败。
- API版本兼容缺陷:你使用的
2020-03-01是较早的API版本,对吞吐模式跨切换的校验逻辑不完善,容易出现配置写入不生效的异常。
正确的配置写法
要实现模式切换,需要按以下规则调整配置:
- 彻底删除resource块中所有和手动吞吐相关的
throughput字段,仅保留自动缩放的配置项 - 按Cosmos DB的规则设置
maxThroughput值:必须是100的整数倍,自动缩放模式最小可设置的最大RU值为4000(对应自动范围1000~4000 RU/s),数值不能超出当前订阅的配额限制 - 将apiVersion升级到较新的稳定版本,例如
2023-04-15
可直接参考的正确配置示例:
{ "name": "你的数据库名称/你的容器名称/default", "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/throughputSettings", "apiVersion": "2023-04-15", "properties": { "resource": { "autoscaleSettings": { "maxThroughput": "4000" } } } }
切换的注意事项
- 部署上述配置会直接覆盖容器原有的手动吞吐配置,整个切换过程不会中断容器的正常服务,仅会改变RU的计费逻辑,从固定容量的手动计费变为自动范围计费
- 如果后续需要从自动缩放切回手动模式,反向操作即可:删除
autoscaleSettings字段,添加合法的throughput字段值完成部署即可。
内容的提问来源于stack exchange,提问作者TamKap
相关产品推荐
相关产品推荐

