Kopiera data från en HTTP-slutpunkt med hjälp av Azure Data Factory eller Azure Synapse Analytics
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
Den här artikeln beskriver hur du använder kopieringsaktivitet i Azure Data Factory och Azure Synapse för att kopiera data från en HTTP-slutpunkt. Artikeln bygger på kopieringsaktivitet, som visar en allmän översikt över kopieringsaktivitet.
Skillnaden mellan den här HTTP-anslutningsappen, REST-anslutningsappen och webbtabellanslutningsappen är:
- REST-anslutningsappen stöder specifikt kopiering av data från RESTful-API:er.
- HTTP-anslutningsappen är allmän för att hämta data från en HTTP-slutpunkt, t.ex. för att ladda ned filen. Innan REST-anslutningsappen blir tillgänglig kan det hända att du använder HTTP-anslutningsappen för att kopiera data från RESTful-API:er, vilket stöds men är mindre funktionellt jämfört med REST-anslutningsappen.
- Webbtabell-anslutningsprogram extraherar tabellinnehåll från en HTML-webbsida.
Funktioner som stöds
Den här HTTP-anslutningsappen stöds för följande funktioner:
Funktioner som stöds | IR |
---|---|
aktiviteten Kopiera (källa/-) | (1) (2) |
Sökningsaktivitet | (1) (2) |
(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning
En lista över datalager som stöds som källor/mottagare finns i Datalager som stöds.
Du kan använda den här HTTP-anslutningsappen för att:
- Hämta data från en HTTP/S-slutpunkt med hjälp av METODERNA HTTP GET eller POST .
- Hämta data med någon av följande autentiseringar: Anonym, Grundläggande, Sammanfattad, Windows eller ClientCertificate.
- Kopiera HTTP-svaret som det är eller parsa det med hjälp av filformat som stöds och komprimeringskodex.
Dricks
Om du vill testa en HTTP-begäran om datahämtning innan du konfigurerar HTTP-anslutningsappen kan du läsa mer om API-specifikationen för krav på sidhuvud och brödtext. Du kan använda verktyg som Visual Studio, PowerShells Invoke-RestMethod eller en webbläsare för att verifiera.
Förutsättningar
Om ditt datalager finns i ett lokalt nätverk, ett virtuellt Azure-nätverk eller Amazon Virtual Private Cloud måste du konfigurera en lokalt installerad integrationskörning för att ansluta till det.
Om ditt datalager är en hanterad molndatatjänst kan du använda Azure Integration Runtime. Om åtkomsten är begränsad till IP-adresser som är godkända i brandväggsreglerna kan du lägga till Azure Integration Runtime-IP-adresser i listan över tillåtna.
Du kan också använda funktionen för integrering av hanterade virtuella nätverk i Azure Data Factory för att få åtkomst till det lokala nätverket utan att installera och konfigurera en lokalt installerad integrationskörning.
Mer information om de nätverkssäkerhetsmekanismer och alternativ som stöds av Data Factory finns i Strategier för dataåtkomst.
Kom igång
Om du vill utföra aktiviteten Kopiera med en pipeline kan du använda något av följande verktyg eller SDK:er:
- Verktyget Kopiera data
- Azure-portalen
- The .NET SDK
- The Python SDK
- Azure PowerShell
- REST-API:et
- Azure Resource Manager-mallen
Skapa en länkad tjänst till en HTTP-källa med hjälp av användargränssnittet
Använd följande steg för att skapa en länkad tjänst till en HTTP-källa i Azure Portal användargränssnittet.
Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:
Sök efter HTTP och välj HTTP-anslutningsappen.
Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.
Konfigurationsinformation för anslutningsprogram
Följande avsnitt innehåller information om egenskaper som du kan använda för att definiera entiteter som är specifika för HTTP-anslutningsappen.
Länkade tjänstegenskaper
Följande egenskaper stöds för den LÄNKADE HTTP-tjänsten:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen måste vara inställd på HttpServer. | Ja |
URL | Bas-URL:en till webbservern. | Ja |
enableServerCertificateValidation | Ange om du vill aktivera TLS/SSL-certifikatverifiering för servern när du ansluter till en HTTP-slutpunkt. Om HTTPS-servern använder ett självsignerat certifikat anger du den här egenskapen till false. | Nej (standardvärdet är sant) |
authenticationType | Anger autentiseringstypen. Tillåtna värden är Anonymous, Basic, Digest, Windows och ClientCertificate. Du kan dessutom konfigurera autentiseringshuvuden i authHeader egenskapen . Se avsnitten som följer den här tabellen för fler egenskaper och JSON-exempel för dessa autentiseringstyper. |
Ja |
authHeaders | Ytterligare HTTP-begärandehuvuden för autentisering. Om du till exempel vill använda API-nyckelautentisering kan du välja autentiseringstyp som "Anonym" och ange API-nyckel i rubriken. |
Nej |
connectVia | Integration Runtime som ska användas för att ansluta till datalagret. Läs mer i avsnittet Förutsättningar . Om det inte anges används standardkörningen för Azure Integration Runtime. | Nej |
Använda Grundläggande, Sammanfattad eller Windows-autentisering
Ange egenskapen authenticationType till Basic, Digest eller Windows. Förutom de allmänna egenskaper som beskrivs i föregående avsnitt anger du följande egenskaper:
Property | Beskrivning | Obligatoriskt |
---|---|---|
userName | Användarnamnet som ska användas för att komma åt HTTP-slutpunkten. | Ja |
password | Lösenordet för användaren ( värdet userName ). Markera det här fältet som en SecureString-typ för att lagra det på ett säkert sätt. Du kan också referera till en hemlighet som lagras i Azure Key Vault. | Ja |
Exempel
{
"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"
}
}
}
Använda ClientCertificate-autentisering
Om du vill använda ClientCertificate-autentisering anger du egenskapen authenticationType till ClientCertificate. Förutom de allmänna egenskaper som beskrivs i föregående avsnitt anger du följande egenskaper:
Property | Beskrivning | Obligatoriskt |
---|---|---|
embeddedCertData | Base64-kodade certifikatdata. | Ange antingen embeddedCertData eller certThumbprint. |
certThumbprint | Tumavtrycket för certifikatet som är installerat på din lokalt installerade Integration Runtime-dators certifikatarkiv. Gäller endast när den lokalt installerade typen av Integration Runtime anges i egenskapen connectVia . | Ange antingen embeddedCertData eller certThumbprint. |
password | Lösenordet som är associerat med certifikatet. Markera det här fältet som en SecureString-typ för att lagra det på ett säkert sätt. Du kan också referera till en hemlighet som lagras i Azure Key Vault. | Nej |
Om du använder certThumbprint för autentisering och certifikatet är installerat i den lokala datorns personliga arkiv beviljar du läsbehörighet till den lokalt installerade Integration Runtime:
- Öppna Microsoft Management Console (MMC). Lägg till snapin-modulen Certifikat som riktar sig mot den lokala datorn.
- Expandera Certifikat>personligt och välj sedan Certifikat.
- Högerklicka på certifikatet från det personliga arkivet och välj sedan Alla uppgifter>Hantera privata nycklar.
- På fliken Säkerhet lägger du till användarkontot under vilket Värdtjänsten för integrationskörning (DIAHostService) körs med läsbehörighet till certifikatet.
- HTTP-anslutningsappen läser bara in betrodda certifikat. Om du använder ett självsignerat eller icke-inintegrerat CA-utfärdat certifikat för att aktivera förtroende måste certifikatet också installeras i något av följande lager:
- Betrodda personer
- Tredjeparts rotcertifikatutfärdare
- Betrodda rotcertifikatutfärdare
Exempel 1: Använda certThumbprint
{
"name": "HttpLinkedService",
"properties": {
"type": "HttpServer",
"typeProperties": {
"authenticationType": "ClientCertificate",
"url": "<HTTP endpoint>",
"certThumbprint": "<thumbprint of certificate>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exempel 2: Använda 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"
}
}
}
Använda autentiseringshuvuden
Dessutom kan du konfigurera begärandehuvuden för autentisering tillsammans med de inbyggda autentiseringstyperna.
Exempel: Använda API-nyckelautentisering
{
"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"
}
}
}
Egenskaper för datauppsättning
En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i artikeln Datauppsättningar .
Azure Data Factory stöder följande filformat. Se varje artikel för formatbaserade inställningar.
- Avro-format
- Binärt format
- Avgränsat textformat
- Excel-format
- JSON-format
- ORC-format
- Parquet-format
- XML-format
Följande egenskaper stöds för HTTP under location
inställningar i formatbaserad datauppsättning:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen under location i datamängden måste vara inställd på HttpServerLocation. |
Ja |
relativeUrl | En relativ URL till resursen som innehåller data. HTTP-anslutningsappen kopierar data från den kombinerade URL:en: [URL specified in linked service][relative URL specified in dataset] . |
Nej |
Kommentar
Nyttolaststorleken för HTTP-begäranden som stöds är cirka 500 KB. Om nyttolaststorleken som du vill skicka till webbslutpunkten är större än 500 KB kan du överväga att batcha nyttolasten i mindre segment.
Exempel:
{
"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"
}
}
}
Egenskaper för kopieringsaktivitet
Det här avsnittet innehåller en lista över egenskaper som HTTP-källan stöder.
En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i Pipelines.
HTTP som källa
Azure Data Factory stöder följande filformat. Se varje artikel för formatbaserade inställningar.
- Avro-format
- Binärt format
- Avgränsat textformat
- Excel-format
- JSON-format
- ORC-format
- Parquet-format
- XML-format
Följande egenskaper stöds för HTTP under storeSettings
inställningar i formatbaserad kopieringskälla:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen under storeSettings måste anges till HttpReadSettings. |
Ja |
requestMethod | HTTP-metoden. Tillåtna värden är Get (standard) och Post. |
Nej |
additionalHeaders | Ytterligare HTTP-begärandehuvuden. | Nej |
requestBody | Brödtexten för HTTP-begäran. | Nej |
httpRequestTimeout | Tidsgränsen (TimeSpan-värdet ) för HTTP-begäran för att få ett svar. Det här värdet är tidsgränsen för att få ett svar, inte tidsgränsen för att läsa svarsdata. Standardvärdet är 00:01:40. | Nej |
maxConcurrentConnections | Den övre gränsen för samtidiga anslutningar som upprättats till datalagret under aktivitetskörningen. Ange endast ett värde när du vill begränsa samtidiga anslutningar. | Nej |
Exempel:
"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>"
}
}
}
]
Egenskaper för uppslagsaktivitet
Mer information om egenskaperna finns i Sökningsaktivitet.
Äldre modeller
Kommentar
Följande modeller stöds fortfarande som de är för bakåtkompatibilitet. Du rekommenderas att använda den nya modellen som nämns i ovanstående avsnitt framöver, och redigeringsgränssnittet har växlat till att generera den nya modellen.
Äldre datauppsättningsmodell
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Datamängdens typegenskap måste anges till HttpFile. | Ja |
relativeUrl | En relativ URL till resursen som innehåller data. När den här egenskapen inte har angetts används endast den URL som anges i den länkade tjänstdefinitionen. | Nej |
requestMethod | HTTP-metoden. Tillåtna värden är Get (standard) och Post. | Nej |
additionalHeaders | Ytterligare HTTP-begärandehuvuden. | Nej |
requestBody | Brödtexten för HTTP-begäran. | Nej |
format | Om du vill hämta data från HTTP-slutpunkten som den är utan att parsa dem och sedan kopiera data till ett filbaserat arkiv hoppar du över formatavsnittet i både indata- och utdatauppsättningsdefinitionerna. Om du vill parsa HTTP-svarsinnehållet under kopiering stöds följande filformattyper: TextFormat, JsonFormat, AvroFormat, OrcFormat och ParquetFormat. Under format anger du typegenskapen till ett av dessa värden. Mer information finns i JSON-format, Textformat, Avro-format, Orc-format och Parquet-format. |
Nej |
komprimering | Ange typ och komprimeringsnivå för data. Mer information finns i Filformat som stöds och komprimeringskodex. Typer som stöds: GZip, Deflate, BZip2 och ZipDeflate. Nivåer som stöds: Optimala och snabbaste. |
Nej |
Kommentar
Nyttolaststorleken för HTTP-begäranden som stöds är cirka 500 KB. Om nyttolaststorleken som du vill skicka till webbslutpunkten är större än 500 KB kan du överväga att batcha nyttolasten i mindre segment.
Exempel 1: Använda metoden Get (standard)
{
"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"
}
}
}
Exempel 2: Använda postmetoden
{
"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>"
}
}
}
Källmodell för äldre kopieringsaktivitet
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen för kopieringsaktivitetskällan måste anges till HttpSource. | Ja |
httpRequestTimeout | Tidsgränsen (TimeSpan-värdet ) för HTTP-begäran för att få ett svar. Det här värdet är tidsgränsen för att få ett svar, inte tidsgränsen för att läsa svarsdata. Standardvärdet är 00:01:40. | Nej |
Exempel
"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>"
}
}
}
]
Relaterat innehåll
En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i Datalager och format som stöds.