Azure создает URL-адрес для стандартного приложения логики с подключением к CosmosDB
У меня есть рабочий процесс в стандартном приложении логики с триггером HTTP. Когда рабочий процесс запущен, рабочий процесс получает некоторые данные из CosmosDB. Что-то вроде:
Предыдущий метод потребует подключения к API. Я уже создал и развернул соединение API «V2». Назовем это
Также в шаблоне ARM для моего приложения логики я уже добавил
....
"siteConfig": {
"appSettings": [
{
"name": "subscriptionId",
"value": "[subscription().subscriptionId]"
},
{
"name": "resourceGroup_name",
"value": "[resourceGroup().name]"
},
{
"name": "location_name",
"value": "[resourceGroup().location]"
},
{
"name": "connectionRuntimeUrl",
"value": "[reference(resourceId('Microsoft.Web/connections', parameters('connection_name')),'2016-06-01', 'full').properties.connectionRuntimeUrl]"
},
.....
]
},
Затем я написал в файле connections.json следующее:
{
"managedApiConnections": {
"documentdb": {
"api": {
"id": "/subscriptions/@appsetting('subscriptionId')/providers/Microsoft.Web/locations/@appsetting('location_name')/managedApis/documentdb"
},
"connection": {
"id": "/subscriptions/@appsetting('subscriptionId')/resourceGroups/@appsetting('resourceGroup_name')/providers/Microsoft.Web/connections/myCosmosCon"
},
"connectionRuntimeUrl": "@appsetting('connection_runtimeUrl')",
"authentication": {
"type": "ManagedServiceIdentity"
}
}
}
}
Теперь, когда я развертываю шаблон ARM своего приложения Logic, рабочего процесса и т. Д., Я не вижу ошибок, рабочий процесс также выглядит хорошо. Проблема только в том, что URL-ссылка на триггер HTTP не создается, я не могу запустить программу.
Однако, если я изменю в файле connections.json на фактическое значение; выглядеть примерно так:
"connectionRuntimeUrl": "https://xxxxxxxxxxxxx.xx.common.logic-norwayeast.azure-apihub.net/apim/myCosmosCon/xxxxxxxxxxxxxxxxxxxxxxxx/",
URL-адрес создается напрямую, и я могу просто запустить рабочий процесс. ПОСЛЕ этого , если я верну
Похоже, что когда я развертываю приложение логики и рабочий процесс, файл connections.json не компилируется и не выполняет вызов, поэтому Azure считает, что произошла ошибка, и не создает ссылку.
Есть идеи, как решить проблему?
Спасибо!
2 ответа
Не уверен, но может быть проблема: когда вы создаете API подключения для стандарта приложения логики, вам также необходимо создать политику доступа на уровне API подключения для системы, назначенной удостоверением, запускающим стандарт приложения логики.
param location string = resourceGroup().location
param cosmosDbAccountName string
param connectorName string = '${cosmosDbAccountName}-connector'
// The principalid of the logic app standard system assigned identity
param principalId string
// get a reference to the cosmos db account
resource cosmosDbAccount 'Microsoft.DocumentDB/databaseAccounts@2021-06-15' existing = {
name: cosmosDbAccountName
}
// create the related connection api
resource cosmosDbConnector 'Microsoft.Web/connections@2016-06-01' = {
name: connectorName
location: location
kind: 'V2'
properties: {
displayName: connectorName
parameterValues: {
databaseAccount: cosmosDbAccount.name
accessKey: listKeys(cosmosDbAccount.id, cosmosDbAccount.apiVersion).primaryMasterKey
}
api: {
id: 'subscriptions/${subscription().subscriptionId}/providers/Microsoft.Web/locations/${location}/managedApis/documentdb'
}
}
}
// Grant permission to the logic app standard to access the connection api
resource cosmosDbConnectorAccessPolicy 'Microsoft.Web/connections/accessPolicies@2016-06-01' = {
name: '${cosmosDbConnector.name}/${principalId}'
location: location
properties: {
principal: {
type: 'ActiveDirectory'
identity: {
tenantId: subscription().tenantId
objectId: principalId
}
}
}
}
output connectionRuntimeUrl string = reference(cosmosDbConnector.id, cosmosDbConnector.apiVersion, 'full').properties.connectionRuntimeUrl
У меня проблема с той же проблемой / ошибкой. Единственный обходной путь, на мой взгляд, - это дважды развернуть рабочий процесс. Первый раз с фактическим URL-адресом, указывающим на фиктивное соединение, и второй раз со ссылкой на приложение.