我有 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?
我的问题是,有没有其他方法可以通过像 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中):
您可以查看这个很棒的文档了解更多详细信息。
我遇到了同样的场景,我需要在源代码管理中维护配置文档,并在 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
您可以通过从 JSON 文档创建工件来使用此 .NET 工具,然后将该工件部署到 Azure Cosmos DB 帐户,与构建/发布 Azure DevOps 管道配合良好:https://github.com/alexanderkozlenko/cotopaxi