Отправка данных в Cosmos DB в Azure Devops

У меня есть шаблон ARM, создающий Cosmos DB, базу данных и коллекции через конвейер. Поскольку существует несколько приложений, использующих базу данных, я хочу заполнить исходные данные для тестирования, я искал задачи импорта Cosmos DB в DevOps и нашел это https://marketplace.visualstudio.com/items?itemName=winvision-bv.winvisionbv-cosmosdb-tasks, но прямо сейчас монго API не поддерживается. он не может импортировать данные из файла json, который у меня есть в учетной записи хранения.

Мой вопрос: есть ли другой способ добавить данные из json файла в Cosmos DB через DevOps, например powershell / api?


person threeleggedrabbit    schedule 04.12.2020    source источник


Ответы (2)


Мой вопрос: есть ли другой способ добавить данные из json файла в Cosmos DB через DevOps, например powershell / api?

Ответ положительный.

Мы могли бы попробовать использовать Azure PowerShell для выполнения следующих скриптов PowerShell:

param([string]$cosmosDbName
     ,[string]$resourceGroup
     ,[string]$databaseName
     ,[string[]]$collectionNames
     ,[string]$principalUser
     ,[string]$principalPassword
     ,[string]$principalTennant)

Write-Output "Loggin in with Service Principal $servicePrincipal"
az login --service-principal -u $principalUser -p $principalPassword -t $principalTennant

Write-Output "Check if database exists: $databaseName"
if ((az cosmosdb database exists -d $databaseName -n $cosmosDbName -g $resourceGroup) -ne "true")
{
  Write-Output "Creating database: $databaseName"
  az cosmosdb database create -d $databaseName -n $cosmosDbName -g $resourceGroup
}

foreach ($collectionName in $collectionNames)
{
  Write-Output "Check if collection exists: $collectionName"
  if ((az cosmosdb collection exists -c $collectionName -d $databaseName -n $cosmosDbName -g $resourceGroup) -ne "true")
  {
    Write-Output "Creating collection: $collectionName"
    az cosmosdb collection create -c $collectionName -d $databaseName -n $cosmosDbName -g $resourceGroup
  }
}

Write-Output "List Collections"
az cosmosdb collection list -d $databaseName -n $cosmosDbName -g $resourceGroup

Затем нажмите три точки после аргументов сценария и добавьте параметры, определенные в сценарии PowerShell (поместите все параметры в переменные):

введите описание изображения здесь

Вы можете проверить это отличный документ для более подробной информации.

person Leo Liu-MSFT    schedule 07.12.2020
comment
Спасибо, но в этой документации рассказывается о том, как создать базу данных с помощью PowerShell, которую сейчас поддерживает шаблон ARM. Я ищу что-нибудь, что может добавить контент в коллекцию. например, скажем, у меня есть testdata.json, я хочу добавить / импортировать данные в коллекцию, чтобы тестовые примеры зависели от этого. - person threeleggedrabbit; 08.12.2020

Я столкнулся с тем же сценарием, когда мне нужно было поддерживать документы конфигурации в системе управления версиями и обновлять различные экземпляры Cosmos по мере их изменения. В итоге я написал сценарий python для чтения структуры каталогов, по одной папке для каждой коллекции, которую мне нужно обновить, а затем прочитал каждый файл json в папке и загрузил его в Cosmos. Оттуда я запустил скрипт python как часть многоступенчатого конвейера в Azure DevOps.

Это ссылка на мой тестовый код https://github.com/tanzencoder/CosmosDBSeedDataExample.

А это ссылка на задачу Python для конвейеров https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/python-script?view=azure-devops

person tanzencoder    schedule 17.02.2021