无法在 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'))]"
          ]
        }
    ]
}