Параметризация файла connections.json приложения Logic App (Standard) с помощью bicep – часть 3

В своих предыдущих двух постах здесь и здесь я кратко показал, как мы можем создать сниппет bicep для создания ресурсов API-соединений и затем использовать его для параметризации connections.json нашего Logic App. Однако я понял, что упустил одну конфигурацию: Политика доступа к API. 😨

Политика доступа к API определяет объект (в моем случае это Logic App), который может получить доступ к API-соединению. В этом посте я расскажу об этой дополнительной конфигурации, а также о наблюдении за поведением бицепса.

Создать политику доступа к API очень просто. Нам нужно создать Microsoft.Web/connections/accessPolicies, и добавить привязку нашего Logic App к этой новой политике доступа.

Приведенный ниже фрагмент создает ресурс политики доступа к API, учитывая, что мы получили конкретный ресурс Logic App, к которому хотим разрешить доступ.

resource apiAccessPolicy 'Microsoft.Web/connections/accessPolicies@2016-06-01' = {
  name: '${logicApp.name}-${guid(resourceGroup().name)}'
  location: location
  parent: serviceBusConnApiConnection
  properties: {
    principal: {
      type: 'ActiveDirectory'
      identity: {
        tenantId: subscription().tenantId
        objectId: reference(logicApp.id, logicApp.apiVersion, 'Full').identity.principalId
      }
    }
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Вот и все. Единственная особенность поведения, которую я заметил, заключается в именовании этого ресурса. Для политики доступа к API сервисной шины нам нужно назвать его с префиксом имени соединения сервисной шины, как в приведенном выше фрагменте. Однако для azure blob это не так.

Для azure blob использование приведенной выше структуры именования приведет к ошибке ~~Expected resource name to not contain any "/" characters. Дочерние ресурсы со ссылкой на родительский ресурс (через свойство parent или через вложенность) не должны содержать полностью определенного имени.bicep(BCP170). ~~Оказывается, мы можем просто назвать его без префикса имени API-соединения 🙄, т.е. просто

name: '${logicApp.name}-${guid(resourceGroup().name)}'

Я все еще пытаюсь понять причину этого, но что ж, это то, что есть 😄.

UPDATE: Оказалось, что я пропустил ключевое слово parent, которое указывает, какой ресурс подключения для политики доступа 😄. После указания родителя мы можем назвать политику доступа без префикса.

Оцените статью
Procodings.ru
Добавить комментарий