Действие Web в Фабрике данных Azure и Azure Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Веб-действие можно использовать для вызова пользовательской конечной точки REST из конвейера Фабрики данных Azure или Synapse. Вы можете передать наборы данных и связанные службы, которые будет использовать это действие и к которым оно будет обращаться.
Примечание.
Веб-действия поддерживаются для вызова URL-адресов, размещенных в частной виртуальной сети, а также с помощью локальной среды выполнения интеграции. Среда выполнения интеграции должна содержать указание на конечную точку URL-адреса.
Примечание.
Максимальный поддерживаемый размер полезных данных выходного ответа составляет 4 МБ.
Создание действия Web с помощью пользовательского интерфейса
Чтобы использовать действие Web в конвейере, выполните следующие действия:
Выполните поиск Web в области "Действия" конвейера и перетащите действие Web на холст конвейера.
Выберите новое действие Web на холсте, если оно еще не выбрано, и перейдите на вкладку Параметры, чтобы изменить сведения о нем.
Укажите URL-адрес, который может быть литеральной строкой URL-адреса или любым сочетанием динамических выражений, функций, системных переменных или выходных данных других действий. Укажите другие сведения для отправки в запрос.
Используйте выходные данные действия в качестве входных данных для любого другого действия. Укажите ссылку на выходные данные в любом месте целевого действия, где поддерживается динамическое содержимое.
Синтаксис
{
"name":"MyWebActivity",
"type":"WebActivity",
"typeProperties":{
"method":"Post",
"url":"<URLEndpoint>",
"httpRequestTimeout": "00:01:00"
"connectVia": {
"referenceName": "<integrationRuntimeName>",
"type": "IntegrationRuntimeReference"
}
"headers":{
"Content-Type":"application/json"
},
"authentication":{
"type":"ClientCertificate",
"pfx":"****",
"password":"****"
},
"datasets":[
{
"referenceName":"<ConsumedDatasetName>",
"type":"DatasetReference",
"parameters":{
...
}
}
],
"linkedServices":[
{
"referenceName":"<ConsumedLinkedServiceName>",
"type":"LinkedServiceReference"
}
]
}
}
Свойства типа
Свойство | Description | Допустимые значения | Обязательное поле |
---|---|---|---|
name | Имя веб-действия | Строка | Да |
type | Необходимо задать значение WebActivity. | Строка | Да |
метод | Метод REST API для целевой конечной точки. | Строка. Поддерживаемые типы: GET, POST, PUT, PATCH, DELETE |
Да |
URL-адрес | Целевая конечная точка и путь | Строка (или выражение с типом результата "строка"). Действие истекает в 1 минуту с ошибкой, если она не получает ответ от конечной точки. Вы можете увеличить время ожидания ответа до 10 минут, обновив свойство httpRequestTimeout. | Да |
httpRequestTimeout | Длительность ожидания ответа. | Формат: чч:мм:сс с максимальным значением 00:10:00. Если не указано явно, используется значение по умолчанию 00:01:00. | No |
заголовки | Заголовки, которые отправляются в запрос. Например, чтобы задать язык и тип запроса: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" } . |
Строка (или выражение с типом результата "строка") | No |
текст | Представляет полезные данные, отправляемые конечной точке. | Строка (или выражение с типом результата "строка"). Просмотрите схему полезных данных запроса в разделе Схема полезных данных запроса. |
Требуется для методов POST/PUT/PATCH. Необязательно для метода DELETE. |
проверка подлинности | Метод проверки подлинности, используемый для вызова конечной точки. Поддерживаемые типы: "Базовый, Сертификат клиента, Назначаемое системой управляемое удостоверение, Назначаемое пользователем управляемое удостоверение, Субъект-служба". Дополнительные сведения см. в разделе Проверка подлинности. Если проверка подлинности не требуется, исключите это свойство. | Строка (или выражение с типом результата "строка") | No |
turnOffAsync | Параметр отключения вызова HTTP GET в поле расположения в заголовке ответа HTTP 202. Если задано значение true, он останавливает вызов HTTP GET в расположении HTTP, заданном в заголовке ответа. Если задано значение false, он продолжает вызов HTTP GET в расположении, заданном в заголовках ответа HTTP. | Допустимые значения: false (по умолчанию) и true. | No |
disableCertValidation | Отключает проверку сертификата на стороне сервера (не рекомендуется, если вы не подключаетесь к доверенному серверу, который не использует стандартный сертификат ЦС). | Допустимые значения: false (по умолчанию) и true. | No |
наборы данных | Список наборов данных, передаваемых в конечную точку. | Массив ссылок на наборы данных. Может быть пустым массивом. | Да |
linkedServices | Список связанных служб, переданных в конечную точку. | Массив ссылок на связанные службы. Может быть пустым массивом. | Да |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Можно использовать среду выполнения интеграции Azure или локальную среду выполнения интеграции (если хранилище данных расположено в частной сети). Если это свойство не задано, используется среда выполнения интеграции Azure по умолчанию. | Ссылка на среду выполнения интеграции. | No |
Примечание.
Конечные точки REST, которые вызывает веб-действие, должны возвращать ответ типа JSON. Действие завершится ошибкой времени ожидания через 1 минуту, если не получит ответ от конечной точки. Для конечных точек, поддерживающих асинхронный шаблон Request-Reply, веб-действие будет продолжать ждать без истечения времени ожидания (до 7 дней) или до того, как конечные точки сообщат о завершении задания.
Ниже приведены требования к содержимому JSON:
Тип значения | Текст запроса | Текст ответа |
---|---|---|
Объект JSON | Поддерживается | Поддерживается |
Массив JSON | Добавлена поддержка . (В настоящее время массивы JSON не работают из-за ошибки. Исправление уже разрабатывается.) |
Не поддерживается |
Значение JSON | Поддерживается | Не поддерживается |
Тип, отличный от JSON | Не поддерживается | Не поддерживается |
Проверка подлинности
Ниже приведены поддерживаемые типы проверки подлинности в веб-действии.
нет
Если проверка подлинности не требуется, не включайте свойство authentication.
Базовая
Укажите имя пользователя и пароль для использования с обычной проверкой подлинности.
"authentication":{
"type":"Basic",
"username":"****",
"password":"****"
}
Сертификат клиента
Укажите содержимое в кодировке base64 PFX-файла и пароль.
"authentication":{
"type":"ClientCertificate",
"pfx":"****",
"password":"****"
}
Это должен быть сертификат x509. Для преобразования в PFX-файл можно использовать свою предпочтительную служебную программу. Для кодировки base-64 можно использовать следующий фрагмент кода PowerShell.
$fileContentBytes = get-content 'enr.dev.webactivity.pfx' -AsByteStream
[System.Convert]::ToBase64String($fileContentBytes) | Out-File ‘pfx-encoded-bytes.txt’
Управляемое удостоверение
Укажите URI ресурса, для которого маркер доступа будет запрошен с помощью управляемого удостоверения для фабрики данных или экземпляра рабочей области Synapse. Для вызова API управления ресурсами Azure используйте https://management.azure.com/
. Дополнительные сведения об управляемых удостоверениях для ресурсов Azure см. в статье Что такое управляемые удостоверения для ресурсов Azure?
"authentication": {
"type": "MSI",
"resource": "https://management.azure.com/"
}
Примечание.
Если фабрика данных или рабочая область Synapse настроена с репозиторием Git, необходимо сохранить свои учетные данные в хранилище Azure Key Vault, чтобы использовать либо обычную проверку подлинности, либо проверку подлинности на основе сертификата клиента. Служба не хранит пароли в Git.
Субъект-служба
Укажите идентификатор клиента, идентификатор субъекта-службы и ключ субъекта-службы, используя безопасную строку для секрета клиента.
"authentication": {
"type": "ServicePrincipal",
"tenant": "your_tenant_id",
"servicePrincipalId": "your_client_id",
"servicePrincipalKey": {
"type": "SecureString",
"value": "your_client_secret"
},
"resource": "https://management.azure.com/"
}
Схема полезных данных запроса
При использовании метода POST или PUT свойство body представляет полезные данные, отправляемые конечной точке. Связанные службы и наборы данных можно передать в качестве части полезных данных. Ниже приведена схема полезных данных.
{
"body": {
"myMessage": "Sample",
"datasets": [{
"name": "MyDataset1",
"properties": {
...
}
}],
"linkedServices": [{
"name": "MyStorageLinkedService1",
"properties": {
...
}
}]
}
}
Пример
В этом примере веб-действие в конвейере вызывает конечную точку REST. Оно передает связанную службу SQL Azure и набор данных SQL Azure в конечную точку. Конечная точка REST использует строку подключения SQL Azure для подключения к логическому серверу SQL и возвращает имя экземпляра сервера SQL Server.
Определение конвейера
{
"name": "<MyWebActivityPipeline>",
"properties": {
"activities": [
{
"name": "<MyWebActivity>",
"type": "WebActivity",
"typeProperties": {
"method": "Post",
"url": "@pipeline().parameters.url",
"headers": {
"Content-Type": "application/json"
},
"authentication": {
"type": "ClientCertificate",
"pfx": "*****",
"password": "*****"
},
"datasets": [
{
"referenceName": "MySQLDataset",
"type": "DatasetReference",
"parameters": {
"SqlTableName": "@pipeline().parameters.sqlTableName"
}
}
],
"linkedServices": [
{
"referenceName": "SqlLinkedService",
"type": "LinkedServiceReference"
}
]
}
}
],
"parameters": {
"sqlTableName": {
"type": "String"
},
"url": {
"type": "String"
}
}
}
}
Значения параметров конвейера
{
"sqlTableName": "department",
"url": "https://adftes.azurewebsites.net/api/execute/running"
}
Код конечной точки веб-службы
[HttpPost]
public HttpResponseMessage Execute(JObject payload)
{
Trace.TraceInformation("Start Execute");
JObject result = new JObject();
result.Add("status", "complete");
JArray datasets = payload.GetValue("datasets") as JArray;
result.Add("sinktable", datasets[0]["properties"]["typeProperties"]["tableName"].ToString());
JArray linkedServices = payload.GetValue("linkedServices") as JArray;
string connString = linkedServices[0]["properties"]["typeProperties"]["connectionString"].ToString();
System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(connString);
result.Add("sinkServer", sqlConn.DataSource);
Trace.TraceInformation("Stop Execute");
return this.Request.CreateResponse(HttpStatusCode.OK, result);
}
Связанный контент
Ознакомьтесь с другими поддерживаемыми действиями потока управления: