Действие Web в Фабрике данных Azure и Azure Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Веб-действие можно использовать для вызова пользовательской конечной точки REST из конвейера Фабрики данных Azure или Synapse. Вы можете передать наборы данных и связанные службы, которые будет использовать это действие и к которым оно будет обращаться.

Примечание.

Веб-действия поддерживаются для вызова URL-адресов, размещенных в частной виртуальной сети, а также с помощью локальной среды выполнения интеграции. Среда выполнения интеграции должна содержать указание на конечную точку URL-адреса.

Примечание.

Максимальный поддерживаемый размер полезных данных выходного ответа составляет 4 МБ.

Создание действия Web с помощью пользовательского интерфейса

Чтобы использовать действие Web в конвейере, выполните следующие действия:

  1. Выполните поиск Web в области "Действия" конвейера и перетащите действие Web на холст конвейера.

  2. Выберите новое действие Web на холсте, если оно еще не выбрано, и перейдите на вкладку Параметры, чтобы изменить сведения о нем.

    Изображение пользовательского интерфейса для действия Web.

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

  4. Используйте выходные данные действия в качестве входных данных для любого другого действия. Укажите ссылку на выходные данные в любом месте целевого действия, где поддерживается динамическое содержимое.

Синтаксис

{
   "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);
}

Ознакомьтесь с другими поддерживаемыми действиями потока управления: