将数据种子到 Azure DevOps 中的 Cosmos DB

问题描述 投票:0回答:3

我有 ARM 模板通过管道创建 Cosmos DB、数据库和集合。由于有多个应用程序使用该数据库,我想种子初始数据进行测试,我在 devops 中寻找 Cosmos DB 导入任务,并找到了这个 https://marketplace.visualstudio.com/items?itemName=winvision-bv .winvisionbv-cosmosdb-tasks,但目前不支持 mongo API。它无法从存储帐户中的 json 文件导入数据。

我的问题是,有没有其他方法可以通过像 powershell/api 这样的 devops 将 json 文件中的数据添加到 cosmos DB?

azure-devops azure-cosmosdb azure-cosmosdb-mongoapi
3个回答
0
投票

我的问题是,有没有其他方法可以通过像 powershell/api 这样的 devops 将 json 文件中的数据添加到 cosmos DB?

答案是肯定的。

我们可以尝试使用 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

然后按Script Arguments后面的三个点,添加PowerShell脚本中定义的参数(将所有参数放在Variables中):

enter image description here

您可以查看这个很棒的文档了解更多详细信息。


0
投票

我遇到了同样的场景,我需要在源代码管理中维护配置文档,并在 Cosmos 的各种实例发生变化时更新它们。我最终要做的是编写一个 python 脚本来读取目录结构,一个文件夹用于存储我需要更新的每个集合,然后读取该文件夹中的每个 json 文件并将其更新到 Cosmos 中。从那里,我运行了 python 脚本,作为 Azure DevOps 中多阶段管道的一部分。

这是我的概念验证代码的链接 https://github.com/tanzencoder/CosmosDBSeedDataExample

这是管道的 Python 任务的链接 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/python-script?view=azure-devops


0
投票

您可以通过从 JSON 文档创建工件来使用此 .NET 工具,然后将该工件部署到 Azure Cosmos DB 帐户,与构建/发布 Azure DevOps 管道配合良好:https://github.com/alexanderkozlenko/cotopaxi

© www.soinside.com 2019 - 2024. All rights reserved.