Создайте API подключения Azure с URL-адресом времени выполнения подключения

#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. не могли бы вы задать еще один вопрос или добавить более подробную информацию ? Стандартное развертывание логического приложения, честно говоря, сложно