Compartilhar via

使用Azure 数据工厂或Azure Synapse Analytics从 HTTP 终结点复制数据

适用于: Azure 数据工厂 Azure Synapse Analytics

本文概述了如何使用 Azure 数据工厂 和 Azure Synapse 中的复制活动从 HTTP 终结点复制数据。 本文是根据复制活动一文(其中大致介绍了复制活动)编写的。

此 HTTP 连接器、REST 连接器Web 表连接器之间的区别如下:

  • REST 连接器专门支持从 RESTful API 复制数据。
  • HTTP 连接器是通用的,可从任何 HTTP 终结点检索数据,以执行文件下载等操作。 在 REST 连接器可用之前,你可能偶然使用 HTTP 连接器从 RESTful API 复制数据,这是受支持的,但与 REST 连接器相比功能较少。
  • Web 表连接器用于从 HTML 网页中提取表内容。

支持的功能

此 HTTP 连接器支持以下功能:

支持的功能 IR
复制操作 (source/-) (1) (2)
查询活动 (1) (2)

(1) Azure集成运行时 (2) 自承载集成运行时

如需可以用作源/接收器的数据存储的列表,请参阅支持的数据存储

可以使用此 HTTP 连接器:

  • 通过 HTTP GET 或 POST 方法,从 HTTP/S 终结点检索数据 。
  • 使用以下身份验证之一检索数据:AnonymousBasicdigestWindowsClientCertificate
  • 按原样复制 HTTP 响应,或者使用支持的文件格式和压缩编解码器分析该响应。

提示

若要先测试数据检索的 HTTP 请求,再配置 HTTP 连接器,请了解标头和正文的 API 规范要求。 可以使用Visual Studio、PowerShell 的 Invoke-RestMethod 或 Web 浏览器等工具来验证。

先决条件

如果数据存储位于本地网络、Azure虚拟网络或 Amazon 虚拟私有云中,则需要配置自承载集成运行时以连接到它。

如果数据存储是托管的云数据服务,则可以使用Azure Integration Runtime。 如果访问仅限于防火墙规则中批准的 IP,则可以将 Azure Integration Runtime IP 添加到允许列表。

还可以在 Azure 数据工厂 中使用 托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

开始

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建指向 HTTP 源的链接服务

使用以下步骤在Azure门户 UI 中创建指向 HTTP 源的链接服务。

  1. 浏览到Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索 HTTP 并选择 HTTP 连接器。

    HTTP 连接器的屏幕截图。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    HTTP 链接服务的配置的屏幕截图。

连接器配置详细信息

对于特定于 HTTP 连接器的实体,以下部分提供有关用于定义这些实体的属性的详细信息。

连接的服务属性

HTTP 链接的服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为 HttpServer。
url Web 服务器的基本 URL。
enableServerCertificateValidation (启用服务器证书验证) 指定连接到 HTTP 终结点时,是否是启用服务器 TLS/SSL 证书验证。 HTTPS 服务器使用自签名证书时,将此属性设置为 false 。
(默认值为 true
认证类型 指定身份验证类型。 允许的值为 AnonymousBasicDigestWindowsClientCertificate。 此外,还可以在 authHeader 属性中配置身份验证标头。 有关这些身份验证类型的更多属性和 JSON 示例,请参阅此表格下面的部分。
authHeaders 附加的用于身份验证的 HTTP 请求标头。
例如,若要使用 API 密钥身份验证,可以将身份验证类型选为“匿名”,然后在标头中指定 API 密钥。
connectVia 用于连接到数据存储的 Integration Runtime。 从先决条件部分了解更多信息。 如果未指定,则使用默认Azure Integration Runtime。

使用基本、摘要或Windows 身份验证

authenticationType 属性设置为 BasicdigestWindows。 除了前面部分所述的通用属性,还指定以下属性:

属性 描述 必需
userName 用于访问 HTTP 终结点的用户名。
密码 用户的密码(其 userName 值)。 将此字段标记为 SecureString 类型以将其安全存储。 还可以引用存储在 Azure 密钥保管库 中的机密。

示例

{
    "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 。 除了前面部分所述的通用属性,还指定以下属性:

属性 描述 必需
嵌入式证书数据 Base64 编码的证书数据。 指定是 embeddedCertData,还是 certThumbprint 。
certThumbprint 安装在自托管 Integration Runtime 计算机的证书存储中的证书的指纹。 仅当在 connectVia 属性中指定自托管的 Integration Runtime 类型时才适用。 指定是 embeddedCertData,还是 certThumbprint 。
密码 与证书关联的密码。 将此字段标记为 SecureString 类型以将其安全存储。 还可以引用存储在 Azure 密钥保管库 中的机密。

如果使用 certThumbprint 进行身份验证,并且证书安装在本地计算机的个人存储中,请向自托管 Integration Runtime 授予读取权限。

  1. 打开Microsoft 管理控制台(MMC)。 添加面向“本地计算机”的“证书”管理单元。
  2. 展开证书个人,然后选择证书
  3. 右键点击证书存储(个人)中的证书,然后选择所有任务>管理私钥
  4. Security 选项卡上,添加运行Integration Runtime主机服务(DIAHostService)的用户帐户,并具有对证书的读取访问权限。
  5. HTTP 连接器仅加载受信任的证书。 如果您使用自签名或非集成的 CA 颁发的证书以启用信任,则还必须将该证书安装在以下任一存储中:
    • 受信任人
    • 第三方根证书颁发机构
    • 受信任的根证书颁发机构

示例 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 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

在格式化数据集的 location 设置中,HTTP 支持以下属性:

属性 描述 必需
类型 数据集中 location 下的 type 属性必须设置为 HttpServerLocation
relativeUrl 包含数据的资源的相对 URL。 HTTP 连接器从以下组合 URL 复制数据:[URL specified in linked service][relative URL specified in dataset]

注意

支持的 HTTP 请求有效负载大小约为 500 KB。 如果要传递给 Web 终结点的有效负载大小大于 500 KB,请考虑以更小的区块对该有效负载进行批处理。

示例:

{
    "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 源支持的属性列表。

有关可用于定义活动的各个部分和属性的完整列表,请参阅管道

HTTP 作为源

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

在基于格式的复制源的 storeSettings 设置中,HTTP 支持以下属性:

属性 描述 必需
类型 storeSettings 下的 type 属性必须设置为 HttpReadSettings
请求方法 HTTP 方法。
允许的值为 Get(默认值)和 Post 。
附加头信息 附加的 HTTP 请求标头。
请求体 HTTP 请求的正文。
httpRequestTimeout 用于获取响应的 HTTP 请求的超时(TimeSpan 值)。 该值是获取响应而不是读取响应数据的超时。 默认值为 00:01:40
最大并发连接数 (maxConcurrentConnections) 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"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>"
            }
        }
    }
]

查找活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

传统模型

注意

仍按原样支持以下模型,以实现向后兼容性。 建议您今后使用上述部分提到的新模型,并且编辑界面已切换为使用新模型。

旧数据集模型

属性 描述 必需
类型 数据集的 type 属性必须设置为 HttpFile 。
relativeUrl 包含数据的资源的相对 URL。 未指定此属性时,仅使用链接服务定义中指定的 URL。
请求方法 HTTP 方法。 允许的值为 Get(默认值)和 Post 。
附加头信息 附加的 HTTP 请求标头。
请求体 HTTP 请求的正文。
格式 如果要在未经分析的情况下从 HTTP 终结点按原样检索数据,并将其复制到基于文件的存储,请跳过输入和输出数据集定义中的格式部分 。

如果要在复制期间分析 HTTP 响应内容,则支持以下文件格式类型:TextFormat、JsonFormat、AvroFormat、OrcFormat 和 ParquetFormat 。 请在格式中将类型属性设置为其中一个值。 有关详细信息,请参阅 JSON 格式文本格式Avro 格式Orc 格式Parquet 格式
压缩 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器

支持的类型:GZipDeflateBZip2ZipDeflate
支持的级别为:最佳最快

注意

支持的 HTTP 请求有效负载大小约为 500 KB。 如果要传递给 Web 终结点的有效负载大小大于 500 KB,请考虑以更小的区块对该有效负载进行批处理。

示例 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 属性必须设置为:HttpSource 。
httpRequestTimeout 用于获取响应的 HTTP 请求的超时(TimeSpan 值)。 该值是获取响应而不是读取响应数据的超时。 默认值为 00:01:40

示例

"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>"
            }
        }
    }
]

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储和格式