获取 Cosmos DB 帐户主帐户 key/primary 与 Azure cli/PowerShell 的连接字符串

Get Cosmos DB account primary account key/primary connection string with Azure cli/PowerShell

我正在创建一个 Azure DevOps 发布管道,我想在其中获取 cosmos db 帐户的主帐户 key/primary 连接字符串作为 Azue CLI 任务的一部分并将其发布为任务变量,以便我可以将其用作数据工厂 ARM 部署 activity 的参数,这是同一管道中的后续任务。 我用来获取密钥的代码是:

az cosmosdb keys list \
   --name <db_account_name> \
   --resource-group <resource_group_name> \
   --subscription <subscription_name> \
   --type connection-strings \
   --query 'connectionStrings[0].connectionString' \
   --output tsv

代码returns

AccountEndpoint=https://<db_account_name>.documents.azure.com:443/;AccountKey=***;

但是不显示account key里面的字符串内容

当我将其存储为任务变量并将其用于 ARM 任务时,出现错误。

  1. 如何通过 Azure cli/tasks 获取作为 azure devops 管道一部分的 cosmos db 帐户主连接 string/account 密钥的文本内容?
  2. 我是否需要更改用于从 Azure 管道访问 cosmos db 帐户的配置文件的 RBAC 角色?

how to get the text content of the cosmos db account primary connection string/account key through azure cli/tasks that are part of azure devops pipeline?

我无法重现您的问题,它在我这边运行良好,AccountKey 以纯文本形式输出。

我的内联脚本:

$a = az cosmosdb keys list --name joycosmostest --resource-group <groupname> --subscription <subscription-id> --type connection-strings --query 'connectionStrings[0].connectionString' --output tsv

echo "##vso[task.setvariable variable=connectionString;isOutput=true]$a"

do I need to change the RBAC roles for the profile that I use to access cosmos db account from azure pipeline?

在 Azure CLI 任务中,它使用 Azure 资源管理器服务连接来验证 Azure 服务,因此您应该确保服务连接中使用的服务主体在您的 cosmos db 帐户中具有正确的 RBAC 角色,例如Contributor.

最简单的 one-liner 将为您提供准确的主键

$primaryKey = (az cosmosdb keys list --name <account_name> --resource-group <resource_group> --subscription <subscription_ID> --type keys  --output json | ConvertFrom-Json).primaryMasterKey
echo "$primaryKey"

输出:

PS C:\Users\Ashwin.singh> ./test.ps1
gKRKaT6XQmf2dinukJit4qiymYYqMOghpdAIuoiEQhTh8VDTrkWB3XNmvyiJyMUNC4uSuwitQMBM0DanZ5Jjbw==
PS C:\Users\Ashwin.singh>