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/-) ① ②
Sökningsaktivitet ① ②

(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 Postman 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:

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-portalens användargränssnitt.

  1. 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:

  2. Sök efter HTTP och välj HTTP-anslutningsappen.

    Screenshot of the HTTP connector.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Screenshot of configuration for an HTTP linked service.

Anslut eller konfigurationsinformation

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:

  1. Öppna Microsoft Management Console (MMC). Lägg till snapin-modulen Certifikat som riktar sig mot den lokala datorn.
  2. Expandera Certifikat>personligt och välj sedan Certifikat.
  3. Högerklicka på certifikatet från det personliga arkivet och välj sedan Alla uppgifter>Hantera privata nycklar.
  4. 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.
  5. 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:
    • Betrodd 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.

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.

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 HttpRead Inställningar. 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
maxConcurrent Anslut ions 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>"
            }
        }
    }
]

En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i Datalager och format som stöds.