使用 Azure Data Factory 或 Azure Synapse Analytics 從 HTTP 端點複製資料
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文概述如何使用 Azure Data Factory 和 Azure Synapse 中的「複製活動」,從 HTTP 端點複製資料。 本文是以複製活動為基礎,該文提供複製活動的一般概觀。
此 HTTP 連接器、REST 連接器和 Web 資料表連接器之間的差異是:
- REST 連接器專門支援從 RESTful API 複製資料;
- HTTP 連接器一般用來從任何 HTTP 端點擷取資料,例如下載檔案。 在 REST 連接器可供使用之前,您可能會使用 HTTP 連接器從 RESTful API 複製資料,這是可支援的方式,但功能性比 REST 連接器低。
- Web 資料表連接器從 HTML 網頁擷取資料表內容。
支援的功能
此 HTTP 連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/-) | ① ② |
查閱活動 | ① ② |
① Azure 整合執行階段 ② 自我裝載整合執行階段
如需支援做為來源/接收器的資料存放區清單,請參閱支援的資料存放區。
您可以使用此 HTTP 連接器來:
- 使用 HTTP GET 或 POST 方法,從 HTTP/S 端點擷取資料。
- 使用下列其中一種驗證來擷取資料︰匿名、基本、摘要、Windows 或 ClientCertificate。
- 依原樣複製 HTTP 回應,或使用支援的檔案格式和壓縮轉碼器來剖析回應。
提示
若要在設定 HTTP 連接器之前,先測試擷取資料的 HTTP 要求,請先了解標頭和本文需求的 API 規格。 您可使用 Visual Studio、PowerShell 的 Invoke-RestMethod 或網頁瀏覽器等工具來驗證。
必要條件
如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。
如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。
您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。
如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立 HTTP 來源的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立連結到 HTTP 來源的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 HTTP 並選取 HTTP 連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,您可使用這些屬性來定義 Netezza 連接器特有的實體。
連結服務屬性
以下是針對 HTTP 連結服務支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為 HttpServer。 | Yes |
URL | Web 伺服器的基底 URL。 | Yes |
enableServerCertificateValidation | 指定是否在您連線到 HTTP 端點時,啟用伺服器 TLS/SSL 憑證驗證。 如果 HTTPS 伺服器使用自我簽署的憑證,請將此屬性設定為 false。 | No (預設值為 true) |
authenticationType | 指定驗證類型。 允許的值為匿名、基本、摘要、Windows 和 ClientCertificate。 您可以在 authHeader 屬性中額外設定驗證標頭。 如需更多關於這些驗證類型的屬性和 JSON 範例,請參閱此表格後面幾節。 |
Yes |
authHeaders | 用於驗證的其他 HTTP 要求標頭。 例如,若要使用 API 金鑰驗證,您可以選取驗證類型 “Anonymous”,並在標頭中指定 API 金鑰。 |
No |
connectVia | 用來連線到資料存放區的整合執行階段。 從必要條件一節深入了解。 如果未指定,則會使用預設的 Azure Integration Runtime。 | No |
使用基本、摘要或 Windows 驗證
將 authenticationType 屬性設定為 [基本]、[摘要] 或 [Windows]。 除了上一節所述的一般屬性以外,請指定下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
userName | 用來存取 HTTP 端點的使用者名稱。 | Yes |
password | 使用者 (userName 值) 的密碼。 將此欄位標記為 SecureString 類型以將其安全地儲存。 您也可以參考 Azure Key Vault 中儲存的認證。 | Yes |
範例
{
"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 進行驗證,且憑證已安裝在本機電腦的個人存放區中,請將讀取權限授予自我裝載整合執行階段︰
- 開啟 Microsoft Management Console (MMC)。 新增目標為 [本機電腦] 的 [憑證] 嵌入式管理單元。
- 展開 [憑證]>[個人],然後選取 [憑證]。
- 以滑鼠右鍵按一下個人存放區中的 [憑證],然後選取 [所有工作]>[管理私密金鑰]。
- 在 [安全性] 索引標籤上,新增使用憑證讀取存取全執行整合執行階段主機服務 (DIAHostService) 的使用者帳戶。
- 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 Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。
在格式型資料集內的 location
設定下,HTTP 支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集內 location 之下的 type 屬性必須設定為 HttpServerLocation。 |
Yes |
relativeUrl | 包含資料之資源的相對 URL。 HTTP 連接器會從合併的 URL 複製資料:[URL specified in linked service][relative URL specified in dataset] 。 |
No |
注意
支援的 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 Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。
在格式型複製來源的 storeSettings
設定下,HTTP 支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | storeSettings 下的 type 屬性必須設定為 HttpReadSettings。 |
Yes |
requestMethod | HTTP 方法。 允許的值為 Get (預設值) 和 Post。 |
No |
additionalHeaders | 其他 HTTP 要求標頭。 | No |
requestBody | HTTP 要求的主體。 | No |
httpRequestTimeout | 用來取得回應的 HTTP 要求會有的逾時值 (TimeSpan 值)。 此值是取得回應的逾時值,而非讀取回應資料的逾時值。 預設值為 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>"
}
}
}
]
查閱活動屬性
若要了解屬性的詳細資料,請參閱查閱活動。
舊版模型
注意
基於回溯相容性,仍照現狀支援下列模型。 建議您繼續使用以上各節所述的新模型,且製作 UI 已切換為產生新模型。
舊版資料集模型
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的 type 屬性必須設定為 HttpFile。 | Yes |
relativeUrl | 包含資料之資源的相對 URL。 若未指定此屬性,則只會使用在連結服務定義中指定的 URL。 | No |
requestMethod | HTTP 方法。 允許的值為 Get (預設值) 和 Post。 | No |
additionalHeaders | 其他 HTTP 要求標頭。 | No |
requestBody | HTTP 要求的主體。 | No |
format | 如果您想要依原樣擷取 HTTP 端點的資料而不進行剖析,然後將資料複製到以檔案為基礎的存放區,請略過輸入和輸出資料集定義中的 format 區段。 如果您想要在複製期間剖析 HTTP 回應內容,支援下列檔案格式類型:TextFormat、JsonFormat、AvroFormat、OrcFormat 和 ParquetFormat。 在 format 之下,將 type 屬性設定為上述其中一個值。 如需詳細資訊,請參閱 JSON 格式、文字格式、Avro 格式、Orc 格式和 Parquet 格式。 |
No |
compression | 指定此資料的壓縮類型和層級。 如需詳細資訊,請參閱支援的檔案格式和壓縮轉碼器。 支援的類型:GZip、Deflate、BZip2 及 ZipDeflate。 支援的層級:Optimal 和 Fastest。 |
No |
注意
支援的 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 | 複製活動來源的 type 屬性必須設定為 HttpSource。 | Yes |
httpRequestTimeout | 用來取得回應的 HTTP 要求會有的逾時值 (TimeSpan 值)。 此值是取得回應的逾時值,而非讀取回應資料的逾時值。 預設值為 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>"
}
}
}
]
相關內容
如需複製活動作為來源和接收端支援的資料存放區清單,請參閱支援的資料存放區和格式。