Как параметризовать значения в файлах workflow.json и connections.json стандартного проекта приложения azure logic

Следуя этой документации, я создал проект с одним клиентом приложения azure logic с использованием кода Visual Studio . А затем создал рабочий процесс на основе моих требований, он содержит конвейер фабрики данных и отправляет действия сетки.

Рабочий процесс содержит жестко запрограммированные значения в действии создания фабрики данных запуска конвейера.

      "Create_a_pipeline_run": {
            "inputs": {
                "host": {
                    "connection": {
                        "referenceName": "azuredatafactory_5"
                    }
                },
                "method": "post",
                "path": "/subscriptions/@{encodeURIComponent('xxxxxxx-xxxx-xxxx-xxxx-xxxxxx')}/resourcegroups/@{encodeURIComponent('xxxxx')}/providers/Microsoft.DataFactory/factories/@{encodeURIComponent('xxxxxx')}/pipelines/@{encodeURIComponent('xxxxxxx')}/CreateRun",
                "queries": {
                    "x-ms-api-version": "2017-09-01-preview"
                }
            },
            "runAfter": {},
            "type": "ApiConnection"
        },

И файл выглядит следующим образом:

      "managedApiConnections": {
"sendgrid": {
  "api": {
    "id": "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/providers/Microsoft.Web/locations/centralus/managedApis/sendgrid"
  },
  "connection": {
    "id": "/subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxx/resourceGroups/xxxxxxx/providers/Microsoft.Web/connections/sendgrid-3"
  },
  "connectionRuntimeUrl": "https://xxxxxxxxxx.19.common.logic-centralus.azure-apihub.net/apim/sendgrid/xxxxxxx/",
  "authentication": {
    "type": "Raw",
    "scheme": "Key",
    "parameter": "@appsetting('sendgrid-connectionKey')"
  }
},
"azuredatafactory_5": {
  "api": {
    "id": "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx/providers/Microsoft.Web/locations/centralus/managedApis/azuredatafactory"
  },
  "authentication": {
    "type": "ManagedServiceIdentity"
  },
  "connection": {
    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/xxxxxxx/providers/Microsoft.Web/connections/azuredatafactory"
  },
  "connectionRuntimeUrl": "https://xxxxxxxxxx.19.common.logic-centralus.azure-apihub.net/apim/azuredatafactory/xxxxxxx"
}
}

Вышеупомянутые управляемые соединения API относятся к существующим соединениям API из Azure. Но я хочу создать новые управляемые соединения API для каждой среды (это означает параметризацию значений в файле на основе среды).

Может ли кто-нибудь предложить мне, как параметризовать значения в workflow.json файлов для каждой среды и параметризуйте значения в connections.json файл для каждой среды.

1 ответ

Стандарт приложения логики - это просто своего рода сервис приложения. workflowApp. Здесь вы можете активно использовать настройки приложений.

  1. Параметры приложения логики.

    В вашей workflow.json, вы можете использовать такие параметры:

            "Create_a_pipeline_run": {
      "inputs": {
        "host": {
          "connection": {
            "referenceName": "azuredatafactory_5"
          }
       },
       "method": "post",
       "path": "/subscriptions/@{encodeURIComponent(parameters('subscription_id'))}/resourcegroups/...",
       "queries": {
         "x-ms-api-version": "2017-09-01-preview"
       }
     },
     "runAfter": {},
     "type": "ApiConnection"
    }
    

    Затем в своем файле укажите следующие настройки приложения:

            {
      "subscription_id": {
        "type": "String",
        "value": "@appsetting('WORKFLOWS_SUBSCRIPTION_ID')"
      }
    }
    

    subscription_id должен быть определен как параметр приложения в службе приложений.

  2. Подключения приложений логики. Таким же образом вы можете использовать настройки и параметры приложения для информации о подключении в вашем connections.json файл:

            {
      "managedApiConnections": {
        "sendgrid": {
          "api": {
            "id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/centralus/managedApis/sendgrid"
          },
          ...
          "authentication": "@parameters('azure_authentication')"
        }
      }
    }
    

    тогда в твоем parameters.json файл:

            {
      "authentication": {
        "type": "object",
        "value": {
          "type": "ManagedServiceIdentity"
        }
      }
      ...
    }
    

Таким образом, вы можете легко выгрузить все параметры, специфичные для среды, в настройки приложения.

Другие вопросы по тегам