Космос БД установил политику индексации через Azure RM - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь установить политику индексации для учетной записи Cosmos DB на Azure сценарии PowerShell RM, но безуспешно.

  $tableProperties = @{
    resource=@{ id=$table; indexingPolicy= @{indexingMode="none"; automatic = "false"; includedPaths = "[]"; excludedPaths = "[]" }  };
     options=@{ Throughput= 500 }
}

  Set-AzureRmResource -ResourceType $tableResourceType `
        -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
        -Name $tableResourceName -PropertyObject $tableProperties -Force 

Узел политики индексирования из Cosmos DB

{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
    {
        "path": "/*"
    }
],
"excludedPaths": [
    {
        "path": "/\"_etag\"/?"
    }
]

}

Обновление: Попробовал:

$containerResourceType = "Microsoft.DocumentDb/databaseAccounts/tables"
$containerName = $destinationStorageName+"/"+ $table

$containerGet = Get-AzResource -ResourceType $containerResourceType `
    -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
    -Name $containerName | Select-Object -ExpandProperty Properties

$containerProperties = @{
    "resource"=@{
        "id"=$containerGet.resource.id; 
        "indexingPolicy"=@{"indexingMode"="none"}
    }
}

Set-AzResource -ResourceType $containerResourceType `
-ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
-Name $containerName -PropertyObject $containerProperties -Force 

Не повезло

1 Ответ

1 голос
/ 31 марта 2020

Для политики индексирования вам нужно только установить indexingMode в none. Также дочерние ресурсы в Космосе не поддерживают PATCH, поэтому для любого PUT на ресурсе вам необходимо включить любые другие свойства, которые были установлены, включая partitionKey, который требуется. Смотрите пример ниже.

Обновление: этот образец использует AzResource, поскольку AzureRM устарел.

$apiVersion="2019-08-01"
$containerResourceType = "Microsoft.DocumentDb/databaseAccounts/sqlDatabases/containers"
$resourceGroupName="myResourceGroup"
$containerName = "mycosmosaccount/myDatabase/myContainer"

$containerGet = Get-AzResource -ResourceType $containerResourceType `
    -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
    -Name $containerName | Select-Object -ExpandProperty Properties

$containerProperties = @{
    "resource"=@{
        "id"=$containerGet.resource.id; 
        "partitionKey"=$containerGet.resource.partitionKey;
        "indexingPolicy"=@{"indexingMode"="none"}
    }
}

Set-AzResource -ResourceType $containerResourceType `
    -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
    -Name $containerName -PropertyObject $containerProperties -Force 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...