无法在 cosmosdb ARM 模板中将 null 设置为自动缩放
Unable to set null to autoscale in cosmosdb ARM template
我正在使用 ARM template.in 创建 cosmos DB,我的 collection 可能有也可能没有自动缩放设置,我想为其他人设置自动缩放最大吞吐量我想输入标准吞吐量.当我的吞吐量为空时,模板选择最大吞吐量,但当自动缩放最大吞吐量为空时,它会抛出它无法转换为整数。
这是工作的:
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection1Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection1Name')]"
},
"options": {
"throughput": null,
"autoscaleSettings": {
"maxThroughput": "4000"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
},
这个不行
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]"
},
"options": {
"throughput": 400,
"autoscaleSettings": {
"maxThroughput": null
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
}
尽管两者都是整数,但第一个有效,第二个无效。我也无法使用条件来不执行自动缩放设置。我想要两者都呈现的原因是我计划 运行 复制到 运行 它用于多个 collection 创建它可以同时具有(手动和自动缩放配置)
我已经使用这个 quickstart 模板作为参考。
您需要将 autoscalesettings
提取到一个专用变量中,并根据您的参数有条件地将其包含在模板中。
完整示例:https://mattfrear.com/2020/06/17/conditionally-specify-a-property-in-an-arm-template/
粗略的描述(可能包含一些小错误)。
{
"parameters": {
"enableAutoscale": {
"type": "bool"
}
// other parameters
},
"variables": {
"autoscaleSettings": {
"maxThroughput": "[parameters('maxThroughput')]"
}
},
"resources": [
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]"
},
"options": {
"throughput": null, // probably similar if/else-logic
"autoscaleSettings": "[if(parameters('enableAutoscale'), json('null'), variables('autoscaleSettings'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
}
]
}
我正在使用 ARM template.in 创建 cosmos DB,我的 collection 可能有也可能没有自动缩放设置,我想为其他人设置自动缩放最大吞吐量我想输入标准吞吐量.当我的吞吐量为空时,模板选择最大吞吐量,但当自动缩放最大吞吐量为空时,它会抛出它无法转换为整数。
这是工作的:
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection1Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection1Name')]"
},
"options": {
"throughput": null,
"autoscaleSettings": {
"maxThroughput": "4000"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
},
这个不行
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]"
},
"options": {
"throughput": 400,
"autoscaleSettings": {
"maxThroughput": null
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
}
尽管两者都是整数,但第一个有效,第二个无效。我也无法使用条件来不执行自动缩放设置。我想要两者都呈现的原因是我计划 运行 复制到 运行 它用于多个 collection 创建它可以同时具有(手动和自动缩放配置) 我已经使用这个 quickstart 模板作为参考。
您需要将 autoscalesettings
提取到一个专用变量中,并根据您的参数有条件地将其包含在模板中。
完整示例:https://mattfrear.com/2020/06/17/conditionally-specify-a-property-in-an-arm-template/
粗略的描述(可能包含一些小错误)。
{
"parameters": {
"enableAutoscale": {
"type": "bool"
}
// other parameters
},
"variables": {
"autoscaleSettings": {
"maxThroughput": "[parameters('maxThroughput')]"
}
},
"resources": [
{
"type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-04-15",
"name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]"
},
"options": {
"throughput": null, // probably similar if/else-logic
"autoscaleSettings": "[if(parameters('enableAutoscale'), json('null'), variables('autoscaleSettings'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', variables('accountName_var'), parameters('databaseName'))]",
"[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName_var'))]"
]
}
]
}