如何在 ARM 模板中获取为 table API 创建的 cosmos DB 的连接字符串

How to get Connection string of a cosmos DB created for table API in ARM template

我正在尝试为 table API 创建一个 cosmos 数据库帐户,并希望使用 ARM 模板将连接字符串上传到 KV。

我希望连接字符串采用这种格式:

DefaultEndpointsProtocol=https;AccountName=<<AccountName>>;AccountKey=<<Key>>;TableEndpoint=https://<<AccountName>>.table.cosmos.azure.com:443/;

我正在使用这个:

[listConnectionStrings(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('globalCosmosDBName')), '2019-12-12').connectionStrings[0].connectionString]

但是有了上面的内容,我得到了如下所示的连接字符串:

AccountEndpoint=https://<<AccountName>>.documents.azure.com:443/;AccountKey==<<Key>>;

如何获取带有 table 端点的连接字符串?

我们的 RP 没有 return 遗留的 table 连接字符串格式。它只有你下面的格式。

我认为唯一的方法是使用 concat 构建字符串并结合使用下面的 referencelistKeys arm 函数。

"[reference(resourceId('Microsoft.DocumentDb/databaseAccounts/', parameters('globalCosmosDBName'))).documentEndpoint]"

"[listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('globalCosmosDBName')), '2020-04-01').primaryMasterKey]"

这是完整的连接函数。

“[concat(‘DefaultEndpointsProtocol=https;AccountName=’, [reference(resourceId('Microsoft.DocumentDb/databaseAccounts/', parameters('globalCosmosDBName'))).documentEndpoint], ‘;AccountKey=’, [listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('globalCosmosDBName')), '2020-04-01').primaryMasterKey], ‘;TableEndpoint=https://’, [reference(resourceId('Microsoft.DocumentDb/databaseAccounts/', parameters('globalCosmosDBName'))).documentEndpoint], ‘.table.cosmos.azure.com:443/;’]”