如何在容器上配置吞吐量?

时间:2019-05-29 19:30:54

标签: azure azure-resource-manager arm-template

我使用this ARM模板创建了Cosmos Db帐户,数据库和容器。正在通过Azure DevOps发布管道进行部署。

我使用this ARM模板来调整数据库吞吐量。它也在Release管道中并且正在运行。

当前,吞吐量是在数据库级别提供的,并在所有容器之间共享。如何在容器级别提供吞吐量?我尝试运行this ARM模板来更新容器级别的吞吐量。看来,一旦在数据库级别配置了共享吞吐量,就无法在容器级别配置吞吐量。

我找到了this参考文档,但未列出吞吐量。我是否缺少某些明显的东西,或者所需的功能尚未实现?

更新: 尝试使用上述模板更新容器时,我得到以下信息:

2019-05-29T20:25:10.5166366Z There were errors in your deployment. Error code: DeploymentFailed.
2019-05-29T20:25:10.5236514Z ##[error]At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
2019-05-29T20:25:10.5246027Z ##[error]Details:
2019-05-29T20:25:10.5246412Z ##[error]NotFound: {
  "code": "NotFound",
  "message": "Entity with the specified id does not exist in the system.\r\nActivityId: 7ba84...b52b2, Microsoft.Azure.Documents.Common/2.4.0.0"
} undefined
2019-05-29T20:25:10.5246730Z ##[error]Task failed while creating or updating the template deployment.

3 个答案:

答案 0 :(得分:3)

我也遇到了相同的错误:

  "code": "NotFound",
  "message": "Entity with the specified id does not exist in the system.

我正在通过DevOps管道部署ARM模板,以更改Azure中现有资源的配置。

现有资源在容器/集合级别定义了专用吞吐量,而我的ARM模板正试图在数据库级别定义吞吐量...

一旦调整了我的部署管道,就可以工作了。

以下是有关吞吐量配置修复的一些信息:https://github.com/MicrosoftDocs/azure-docs/issues/30853

答案 1 :(得分:0)

我非常确定ARM不可能做到这一点,因为存在以下API参考,而容器上没有吞吐量:https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/databaseaccounts/createupdatesqlcontainer#definitions

答案 2 :(得分:0)

我认为您首先必须创建具有专用吞吐量的容器。我没有看到任何有关将容器从共享吞吐量更改为专用吞吐量的文档。在Microsoft documentation中,该示例正在创建具有共享吞吐量和专用吞吐量的容器。

  

设置数据库和容器的吞吐量

     

您可以组合两个模型。允许在数据库和容器上供应吞吐量。以下示例显示如何在Azure Cosmos数据库和容器上设置吞吐量:

     
      
  • 您可以创建预配置吞吐量为“ K”个RU的名为Z的Azure Cosmos数据库。
  •   
  • 接下来,在数据库中创建五个名为A,B,C,D和E的容器。创建容器B时,请确保启用“为此容器提供专用吞吐量”选项,并在此容器上显式配置所提供吞吐量的“ P”个RU。请注意,只有在创建数据库和容器时,才能配置共享吞吐量和专用吞吐量。
  •   
  • “ K” RU吞吐量在四个容器A,C,D和E之间共享。A,C,D或E可用的吞吐量的确切数量有所不同。每个容器的吞吐量都没有SLA。
  •   
  • 保证容器B始终获得“ P”个RU吞吐量。它由SLA支持。
  •   

prereq的子文件夹中有一个101-cosmosdb-sql-container-ru-update ARM模板。在prereq版本中,容器在创建容器时设置了throughput属性。创建具有专用吞吐量的容器后,更新模板可以正常工作。我已经尝试过并验证了它的有效性。 enter image description here

        {
            "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases",
            "name": "[concat(variables('accountName'), '/sql/', variables('databaseName'))]",
            "apiVersion": "2016-03-31",
            "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/', variables('accountName'))]" ],
            "properties":{
                "resource":{
                    "id": "[variables('databaseName')]"
                },
                "options": { "throughput": "[variables('databaseThroughput')]" }
            }
        },
        {
            "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers",
            "name": "[concat(variables('accountName'), '/sql/', variables('databaseName'), '/', variables('containerName'))]",
            "apiVersion": "2016-03-31",
            "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/apis/databases', variables('accountName'), 'sql', variables('databaseName'))]" ],
            "properties":
            {
                "resource":{
                    "id":  "[variables('containerName')]",
                    "partitionKey": {
                        "paths": [
                        "/MyPartitionKey1"
                        ],
                        "kind": "Hash"
                    }
                },
                "options": { "throughput": "[variables('containerThroughput')]" }
            }
        }