ubi*_*bie 10 azure-rm-template azure-cosmosdb
我有一个 ARM 模板,它提供 cosmosDb 的 primaryMasterKey,如下所示:
{ "properties": { "enabled": true, "siteConfig": { "appSettings": [ { "name": "MongoDb:CnnDetails", "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts') , variables('cosmosdb_full')), '2015-04-08').primaryMasterKey]" } }
如何修改它以获取实际的连接字符串?
我尝试了几件事:
'语言表达式属性'primaryConnectionString'不存在,可用属性为'primaryMasterKey、secondaryMasterKey、primaryReadonlyMasterKey、secondaryReadonlyMasterKey'
'语言表达式属性 'primaryConnectionString' 不存在,可用属性为 'connectionStrings'
我去https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/databaseaccounts/listconnectionstrings#code-try-0尝试一下。ListKeys 返回这样的结构:
{ "primaryMasterKey": "[REDACTED]", "secondaryMasterKey": "[REDACTED]", "primaryReadonlyMasterKey": "[REDACTED]", "secondaryReadonlyMasterKey": "[REDACTED]" }
所以我明白为什么 .primaryMasterKey 起作用了。但 ListConnectionStrings 返回:
{
"connectionStrings": [
{
"connectionString": "mongodb://[REDACTED]:10255/?ssl=true&replicaSet=globaldb",
"description": "Primary MongoDB Connection String"
},
{
"connectionString": "mongodb://[REDACTED]:10255/?ssl=true&replicaSet=globaldb",
"description": "Secondary MongoDB Connection String"
},
{
"connectionString": "mongodb://[REDACTED]:10255/?ssl=true&replicaSet=globaldb",
"description": "Primary Read-Only MongoDB Connection String"
},
{
"connectionString": "mongodb://[REDACTED]:10255/?ssl=true&replicaSet=globaldb",
"description": "Secondary Read-Only MongoDB Connection String"
}
]
}
Run Code Online (Sandbox Code Playgroud)
不确定如何“索引到它”?
任何线索都感激地收到。
Off*_*oes 18
对于其他人发现这个问题并想要一个完整的 ARM 模板片段,这就是我使用过的并且正在工作:
"connectionStrings": [
{
"name": "CosmosConnection",
"connectionString": "[listConnectionStrings(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDbAccountName')), '2019-12-12').connectionStrings[0].connectionString]",
"type": 3
}
]
Run Code Online (Sandbox Code Playgroud)
就像您通常使用几乎任何语言一样:
ListConnectionStrings.connectionStrings[index].connectionString
Run Code Online (Sandbox Code Playgroud)
索引从 0 开始。
你有一个更“本地”的方式来做到这一点:
first(ListConnectionStrings.connectionStrings).connectionString
Run Code Online (Sandbox Code Playgroud)
但只有可用的功能是 first 和 last
小智 5
oatsoda 在这里的答案是正确的,但只有当您与要获取连接字符串的 Cosmos DB 位于同一资源组中时,它才有效。如果您遇到这样的情况,您的 Cosmos DB 与您正在为以下代码段生成 ARM 模板的资源位于不同的资源组中,我已使用该模板为应用程序服务生成连接字符串并且正在运行。
"Cosmos": {
"value": "[listConnectionStrings(resourceId(parameters('cosmosResourceGroupName'),'Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDbName')), '2019-12-12').connectionStrings[0].connectionString]",
"type": "Custom"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |