Копирование данных из конечной точки HTTP с помощью Фабрики данных Azure или Azure Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия копирования в Фабрике данных Azure и Azure Synapse копировать данные из конечной точки HTTP. Это продолжение статьи о действии копирования в Фабрике данных Azure, в которой представлены общие сведения о действии копирования.
Далее приводятся различия между соединителем HTTP, соединителем REST и соединителем веб-таблиц.
- Соединитель REST предназначен для поддержки копирования данных из RESTful API.
- Соединитель HTTP применяется для извлечения данных из любой конечной точки HTTP, например для скачивания файла. Пока соединитель REST недоступен, для копирования данных из интерфейсов REST API можно использовать соединитель HTTP, который поддерживается, но является менее функциональным по сравнению с соединителем REST.
- Соединитель веб-таблиц извлекает содержимое таблицы со страницы HTML.
Поддерживаемые возможности
Соединитель HTTP поддерживается для перечисленных ниже возможностей.
Поддерживаемые возможности | IR |
---|---|
Действие копирования (источник/-) | (1) (2) |
Действие поиска | (1) (2) |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Список хранилищ данных, которые поддерживаются в качестве источников/приемников, см. в разделе Поддерживаемые хранилища данных.
Можно использовать этот соединитель HTTP для таких действий.
- Извлечение данных из конечной точки HTTP/S с помощью методов GET или POST HTTP.
- Получение данных с помощью одной из следующих проверок подлинности: Anonymous, Basic, Digest, Windows или ClientCertificate.
- Копирование ответа HTTP "как есть" или его анализ с использованием поддерживаемых форматов файлов и сжатия кодеков.
Совет
Чтобы проверить HTTP-запрос для получения данных, прежде чем настраивать соединитель HTTP, ознакомьтесь со спецификацией API по требованиям к заголовку и тексту запроса. Для проверки можно использовать такие инструменты, как Visual Studio, PowerShell Invoke-RestMethod или веб-браузер.
Необходимые компоненты
Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.
Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.
Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.
Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для источника HTTP с помощью пользовательского интерфейса
Выполните следующие действия, чтобы создать связанную службу для источника HTTP в пользовательском интерфейсе портала Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск по запросу HTTP и выберите соединитель HTTP.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
В разделах ниже приведены сведения о свойствах, которые используются для определения сущностей, относящихся к соединителю HTTP.
Свойства связанной службы
Для связанной службы HTTP поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type необходимо задать значение HttpServer. | Да |
URL-адрес | Базовый URL-адрес веб-сервера. | Да |
enableServerCertificateValidation | Укажите, следует ли включать проверку TLS/SSL-сертификата на сервере при подключении к конечной точке HTTP. Если ваш сервер HTTPS использует самозаверенный сертификат, установите свойство false. | No (значение по умолчанию true) |
authenticationType | Указывает тип проверки подлинности. Допустимые значения Anonymous, Basic , Digest, Windows и ClientCertificate. Кроме того, можно настроить заголовки проверки подлинности в свойстве authHeader . С дополнительными свойствами и примерами JSON этих типов проверки подлинности ознакомьтесь в последующих разделах этой таблицы. |
Да |
authHeaders | Дополнительные заголовки HTTP-запросов для проверки подлинности. Например, чтобы использовать проверку подлинности с помощью ключа API, можно выбрать тип проверки подлинности "Анонимный" и указать ключ API в заголовке. |
No |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная Azure Integration Runtime. | No |
Использование типов проверки подлинности Basic, Digest или Windows
Установите свойство authenticationType как Базовый, Дайджест или Windows. В дополнение к общим свойствам, описанных в предыдущих разделах, укажите следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
userName | Имя пользователя для доступа к конечной точке HTTP. | Да |
password | Пароль для пользователя (значение userName). Пометьте это поле как тип SecureString для безопасного хранения. Вы можете также указать секрет, хранящийся в Azure Key Vault. | Да |
Пример
{
"name": "HttpLinkedService",
"properties": {
"type": "HttpServer",
"typeProperties": {
"authenticationType": "Basic",
"url" : "<HTTP endpoint>",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Использование типа проверки подлинности ClientCertificate
Чтобы использовать проверку подлинности ClientCertificate, установите свойство authenticationType для ClientCertificate. В дополнение к общим свойствам, описанных в предыдущих разделах, укажите следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
embeddedCertData | Данные сертификата, закодированные в Base64. | Укажите либо embeddedCertData или certThumbprint. |
certThumbprint | Отпечаток сертификата, установленного в хранилище сертификатов компьютера локальной среды выполнения интеграции. Применяется, только если в свойство connectVia задан тип среды выполнения интеграции. | Укажите либо embeddedCertData или certThumbprint. |
password | Пароль, связанный с сертификатом. Пометьте это поле как тип SecureString для безопасного хранения. Вы можете также указать секрет, хранящийся в Azure Key Vault. | No |
Если вы используете свойство certThumbprint для проверки подлинности, а сертификат установлен в личном хранилище локального компьютера, предоставьте разрешения на чтение для локальной среды выполнения интеграции.
- Откройте консоль управления (MMC). Добавьте оснастку Сертификаты, которая связана с локальным компьютером.
- Разверните Сертификаты>Личные, и затем выберите Сертификаты.
- Щелкните правой кнопкой мыши сертификат в личном хранилище, а затем выберите Все задачи>Управление закрытыми ключами.
- На вкладке Безопасность добавьте учетную запись пользователя, с помощью которой запущена служба узла локальной среды выполнения интеграции (DIAHostService) с доступом на чтение к сертификату.
- Соединитель HTTP загружает только доверенные сертификаты. Если вы используете самозаверяющий или неинтегрированный сертификат ЦС, чтобы включить доверие, сертификат также должен быть установлен в одном из следующих хранилищ:
- Доверенные лица
- Сторонние корневые центры сертификации
- Доверенные корневые центры сертификации
Пример 1. Использование certThumbprint
{
"name": "HttpLinkedService",
"properties": {
"type": "HttpServer",
"typeProperties": {
"authenticationType": "ClientCertificate",
"url": "<HTTP endpoint>",
"certThumbprint": "<thumbprint of certificate>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Пример 2. Использование embeddedCertData
{
"name": "HttpLinkedService",
"properties": {
"type": "HttpServer",
"typeProperties": {
"authenticationType": "ClientCertificate",
"url": "<HTTP endpoint>",
"embeddedCertData": "<Base64-encoded cert data>",
"password": {
"type": "SecureString",
"value": "password of cert"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Использование заголовков проверки подлинности
Кроме того, можно настроить заголовки запроса для проверки подлинности вместе со встроенными типами проверки подлинности.
Пример. Использование проверки подлинности ключа API
{
"name": "HttpLinkedService",
"properties": {
"type": "HttpServer",
"typeProperties": {
"url": "<HTTP endpoint>",
"authenticationType": "Anonymous",
"authHeader": {
"x-api-key": {
"type": "SecureString",
"value": "<API key>"
}
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Свойства набора данных
Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных.
Фабрика данных Azure поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.
- Формат Avro
- Двоичный формат
- Формат текста с разделителями
- Формат Excel
- Формат JSON
- Формат ORC
- Формат Parquet
- ФОРМАТ XML
Ниже перечислены свойства, которые поддерживаются для HTTP-сервера в настройках location
набора данных на основе формата:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство типа в location для набора данных следует установить как HttpServerLocation. |
Да |
relativeUrl | Относительный URL-адрес ресурса, который содержит данные. HTTP-соединитель копирует данные из объединенного URL-адреса: [URL specified in linked service][relative URL specified in dataset] . |
No |
Примечание.
Поддерживаемый размер полезных данных запроса HTTP — около 500 КБ. Если размер полезных данных, которые вы хотите передать в конечную веб-точку, превышает размер 500 КБ, разбейте полезные данные на небольшие блоки.
Пример:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<HTTP linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "HttpServerLocation",
"relativeUrl": "<relative url>"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
Свойства действия копирования
Этот раздел содержит список свойств, поддерживаемых источником HTTP.
Полный список разделов и свойств, доступных для определения действий, см. в статье, посвященной конвейерам и действиям в Фабрике данных Azure.
HTTP в качестве источника
Фабрика данных Azure поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.
- Формат Avro
- Двоичный формат
- Формат текста с разделителями
- Формат Excel
- Формат JSON
- Формат ORC
- Формат Parquet
- ФОРМАТ XML
Ниже перечислены свойства, которые поддерживаются для HTTP-сервера в storeSettings
источнике копирования на основе формата:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства типа в storeSettings необходимо задать значение HttpReadSettings. |
Да |
requestMethod | Метод HTTP. Допустимые значения: GET (по умолчанию) и POST. |
No |
additionalHeaders | Дополнительные заголовки HTTP-запроса. | No |
requestBody | Текст HTTP-запроса. | No |
httpRequestTimeout | Время ожидания (значение Временной диапазон) ответа для HTTP-запроса. Это значение является интервалом времени для получения ответа, а не считывания данных ответа. По умолчанию используется значение 00:01:40. | No |
maxConcurrentConnections | Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. | No |
Пример:
"activities":[
{
"name": "CopyFromHTTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delimited text input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"formatSettings":{
"type": "DelimitedTextReadSettings",
"skipLineCount": 10
},
"storeSettings":{
"type": "HttpReadSettings",
"requestMethod": "Post",
"additionalHeaders": "<header key: header value>\n<header key: header value>\n",
"requestBody": "<body for POST HTTP request>"
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Свойства действия поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Устаревшие модели
Примечание.
Следующие модели по-прежнему поддерживаются на условиях "как есть" для обеспечения обратной совместимости. В дальнейшем рекомендуется использовать новую модель, упомянутую в разделах выше. Пользовательский интерфейс разработки был изменен для создания новой модели.
Устаревшая модель набора данных
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type для набора данных должно иметь значение HttpFile. | Да |
relativeUrl | Относительный URL-адрес ресурса, который содержит данные. Если свойство не задано, используется только URL-адрес, указанный в определении связанной службы. | No |
requestMethod | Метод HTTP. Допустимые значения: GET (по умолчанию) и POST. | No |
additionalHeaders | Дополнительные заголовки HTTP-запроса. | No |
requestBody | Текст HTTP-запроса. | No |
format | Если требуется получить данные из конечной точки HTTP "как есть", — без анализа и копирования в хранилище файлов — можно пропустить раздел форматирования в определениях входного и выходного наборов данных. Поддерживаемые форматы для выполнения анализа содержимого ответа HTTP в процессе выполнения операции копирования: TextFormat, JsonFormat, AvroFormat, OrcFormat и ParquetFormat. Свойству type в разделе format необходимо присвоить одно из этих значений. Дополнительные сведения см. в разделах о формате JSON, текстовом формате, формате Avro, формате Orc и формате Parquet. |
No |
compression | Укажите тип и уровень сжатия данных. Дополнительные сведения см. в разделе Поддержка сжатия. Поддерживаемые типы: GZip, Deflate, BZip2 и ZipDeflate. Поддерживаемые уровни: Optimal и Fastest. |
No |
Примечание.
Поддерживаемый размер полезных данных запроса HTTP — около 500 КБ. Если размер полезных данных, которые вы хотите передать в конечную веб-точку, превышает размер 500 КБ, разбейте полезные данные на небольшие блоки.
Пример 1. Использование метода Get (по умолчанию)
{
"name": "HttpSourceDataInput",
"properties": {
"type": "HttpFile",
"linkedServiceName": {
"referenceName": "<HTTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"relativeUrl": "<relative url>",
"additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
}
}
}
Пример 2. Использование метода POST
{
"name": "HttpSourceDataInput",
"properties": {
"type": "HttpFile",
"linkedServiceName": {
"referenceName": "<HTTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"relativeUrl": "<relative url>",
"requestMethod": "Post",
"requestBody": "<body for POST HTTP request>"
}
}
}
Устаревшая модель источника действия копирования
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type источника действия копирования должно иметь значение HttpSource. | Да |
httpRequestTimeout | Время ожидания (значение Временной диапазон) ответа для HTTP-запроса. Это значение является интервалом времени для получения ответа, а не считывания данных ответа. По умолчанию используется значение 00:01:40. | No |
Пример
"activities":[
{
"name": "CopyFromHTTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<HTTP input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "HttpSource",
"httpRequestTimeout": "00:01:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Связанный контент
Список хранилищ данных, поддерживаемых действием копирования в качестве источников и приемников, приведен в разделе Поддерживаемые хранилища данных и форматы.