#azure #azure-resource-manager #azure-bicep #azure-logic-app-standard
Вопрос:
У меня есть приложение логики (стандартное приложение логики), которое вызывает cosmos DB. Мне нужно сохранить «Url-адрес времени выполнения подключения» в конфигурации приложения логики.
Когда я создаю соединение из конструктора приложений логики, соединение обладает этим свойством. Однако, когда я развертываю одно и то же соединение с помощью шаблона ARM, соединение не обладает этим свойством.
Кто-нибудь знает, как можно получить это свойство или сгенерировать его? И, если возможно, как назвать это позже в шаблоне ARM
Спасибо
Ответ №1:
Согласно этому обсуждению, простое соединение API (V1) может не иметь «connectionRuntimeUrl». Итак, чтобы иметь возможность увидеть это, мне нужно добавить
"kind": "V2",
в шаблоне моей связи, также как написал @Thomas в своем ответе
Ответ №2:
Только API-соединение kind: 'V2'
может возвращать a connectionRuntimeUrl
.
Вы можете создать соединитель cosmos db с помощью приведенного ниже сценария (bicep).:
param location string = resourceGroup().location
param cosmosDbAccountName string
param connectorName string = '${cosmosDbAccountName}-connector'
// 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'
}
}
}
output connectionRuntimeUrl string = reference(cosmosDbConnector.id, cosmosDbConnector.apiVersion, 'full').properties.connectionRuntimeUrl
URL-адрес будет выводом сгенерированного ARM
Затем вы можете задать этот URL-адрес в качестве настройки приложения в приложении рабочего процесса:
COSMOS_CONNECTION_RUNTIMEURL: <connectionRuntimeUrl>
Затем в connections.json
файле вы можете сослаться на эту настройку приложения:
{
"managedApiConnections": {
"documentdb": {
...
"connectionRuntimeUrl": "@appsetting('COSMOS_CONNECTION_RUNTIMEURL')"
}
}
}
Использование настроек и параметров приложений должно упростить развертывание
Комментарии:
1. Да, теперь это работает. Секрет заключался в том, что мне нужно было добавить «Kind = V2» в мой шаблон подключения к api, согласно: github.com/Azure/bicep/issues/3494 Я не мог видеть этого раньше. Спасибо Томас
2. Но @Thomas, похоже, что, когда я звоню в appsetting в connections.json, мои рабочие процессы не нашли соединение . Он не показывает мне никаких ошибок, но Azure не создает URL-адрес, который я могу использовать в качестве триггера для вызова этого рабочего процесса. Это похоже на внутреннюю ошибку. Мне нужно удалить действие, нажать «Сохранить» (это создаст URL-адрес), затем скопировать и вставить мой исходный файл workflow.json, а затем нажать «Выполнить» (в конце я получил правильный результат, но мне нужны некоторые исправления вручную, как я объяснил). Есть идеи?
3. это локально или после развертывания ?
4. URL-адрес не создается после развертывания, а также локально, если я создал новый рабочий процесс вручную, скопировал шаблон ARM вручную и вставил его в раздел рабочий процесс — > код. а потом спас. В обоих случаях я не вижу ошибок, но URL-ссылка не генерируется!!!
5. не могли бы вы задать еще один вопрос или добавить более подробную информацию ? Стандартное развертывание логического приложения, честно говоря, сложно