Как включить функции предварительного просмотра Azure Cosmos DB (конвейер агрегации и Mongodbv3.4) через Powershell? - PullRequest
0 голосов
/ 12 июня 2018

Я хотел бы включить функции предварительного просмотра Aggregation Pipeline и MongoDBv3.4 программно через AzureRM Powershell.

enter image description here

До сих пор я пытался сделать это с помощью шаблона Azure ARM и команды Set-AzureRmResource, но безуспешно.

Set-AzureRmResource:

$updateDBProperties = @{
        "capabilities" = @(@{"Name" = "EnableAggregationPipeline"}, @{"Name"= "MongoDBv3.4"}) 
};

# also tried without luck
# $updateDBProperties = @{
#       "capabilities" = @("EnableAggregationPipeline", "MongoDBv3.4")
# };

# won't work
Set-AzureRmResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2015-04-08" `
    -ResourceGroupName "my-resource-group" `
    -Name "my-cosmosdb-development" `
    -Properties $updateDBProperties

Шаблон сквозного кронштейна без удачи:

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "cosmosDBName": {
    "type": "string"
    },
    "location": {
    "type": "string"
    },
    "locations": {
    "type": "array"
    }
},
"variables": {},
"resources": [
    {
    "name": "[parameters('cosmosDBName')]",
    "type": "Microsoft.DocumentDB/databaseAccounts",
    "apiVersion": "2015-04-08",
    "location": "[parameters('location')]",
    "kind": "MongoDB",
    "properties": {
        "consistencyPolicy": {
        "defaultConsistencyLevel": "Session",
        "maxIntervalInSeconds": 5,
        "maxStalenessPrefix": 100
        },
        "databaseAccountOfferType": "Standard",
        "locations": "[array(parameters('locations'))]",
        "capabilities": [
        {
            "name": "EnableAggregationPipeline"
        },
        {
            "name": "MongoDBv3.4"
        }
        ]
    }
    }
],
"outputs": {}
}

Загружаем шаблон кронштейна выше через Powershell.Создается база данных cosmos, но функции предварительного просмотра не включены:

New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroup -TemplateFile $templateDirectory"/azureCosmosDB.json" -TemplateParameterObject $templateParameterObject -Name $templateParameterObject.cosmosDBName;

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Это достигается с помощью PowerShell путем исправления ресурса учетной записи CosmosDB.Ключ должен добавить флаг -UsePatchSemantics к Set-AzureRmResource, чтобы он выполнял запрос HTTP PATCH, а не HTTP PUT.

$db = Get-AzureRmResource -ResourceName "CosmosDB account name" -ResourceGroupName "RG name" | Where-Object -Property ResourceType -eq "Microsoft.DocumentDb/databaseAccounts"

# Enable some optional capabilities/features
$props = @{capabilities = @( @{name="EnableAggregationPipeline"}, @{name="MongoDBv3.4"})}

# Patch the resource with these settings
Set-AzureRmResource -ResourceId $db.ResourceId -ApiVersion "2015-04-08" -PropertyObject $props -UsePatchSemantics
0 голосов
/ 04 декабря 2018

Мне удалось установить эти возможности с помощью инструмента командной строки az:

az cosmosdb update \
   --name my-resource-group \
   --resource-group my-cosmosdb-deployment \
   --capabilities "EnableAggregationPipeline" "MongoDBv3.4"

Хотя это заняло несколько минут.Надеюсь, это поможет!

...