Przenoszenie danych ze źródła HTTP przy użyciu Azure Data Factory

Uwaga

Ten artykuł dotyczy wersji 1 usługi Data Factory. Jeśli używasz bieżącej wersji usługi Azure Data Factory, zobacz Łącznik HTTP w wersji 2.

W tym artykule opisano sposób użycia działania kopiowania w Azure Data Factory w celu przeniesienia danych z lokalnego lub chmurowego punktu końcowego HTTP do obsługiwanego magazynu danych ujścia. W tym artykule omówiono przenoszenie danych przy użyciu działania kopiowania, które przedstawia ogólne omówienie przenoszenia danych przy użyciu działania kopiowania. W tym artykule wymieniono również magazyny danych obsługiwane przez działanie kopiowania jako źródła i ujścia.

Usługa Data Factory obsługuje obecnie tylko przenoszenie danych ze źródła HTTP do innych magazynów danych. Nie obsługuje przenoszenia danych z innych magazynów danych do miejsca docelowego HTTP.

Obsługiwane scenariusze i typy uwierzytelniania

Ten łącznik HTTP umożliwia pobieranie danych zarówno z chmury, jak i lokalnego punktu końcowego HTTP/S przy użyciu metod HTTP GET lub POST . Obsługiwane są następujące typy uwierzytelniania: Anonimowe, Podstawowe, Szyfrowane, Windows i ClientCertificate. Zwróć uwagę na różnicę między tym łącznikiem a łącznikiem tabeli sieci Web. Łącznik tabeli sieci Web wyodrębnia zawartość tabeli ze strony internetowej HTML.

Podczas kopiowania danych z lokalnego punktu końcowego HTTP należy zainstalować bramę Zarządzanie danymi w środowisku lokalnym lub na maszynie wirtualnej platformy Azure. Aby dowiedzieć się więcej na temat Zarządzanie danymi Gateway i instrukcji krok po kroku dotyczących sposobu konfigurowania bramy, zobacz Przenoszenie danych między lokalizacjami lokalnymi a chmurą.

Rozpoczęcie pracy

Możesz utworzyć potok, który ma działanie kopiowania, aby przenieść dane ze źródła HTTP przy użyciu różnych narzędzi lub interfejsów API:

  • Najprostszym sposobem utworzenia potoku jest użycie kreatora kopiowania danych. Aby uzyskać szybki przewodnik po tworzeniu potoku przy użyciu kreatora kopiowania danych, zobacz Samouczek: tworzenie potoku przy użyciu kreatora kopiowania.

  • Do utworzenia potoku można również użyć następujących narzędzi: Visual Studio, Azure PowerShell, szablon usługi Azure Resource Manager, interfejs API platformy .NET lub interfejs API REST. Aby uzyskać instrukcje krok po kroku dotyczące tworzenia potoku z działaniem kopiowania, zobacz samouczek Dotyczący działania kopiowania. Przykłady JSON, które kopiują dane ze źródła HTTP do usługi Azure Blob Storage, zobacz przykłady JSON.

Właściwości połączonej usługi

W poniższej tabeli opisano elementy JSON specyficzne dla połączonej usługi HTTP:

Właściwość Opis Wymagane
typ Właściwość type musi być ustawiona na Http. Tak
url Podstawowy adres URL serwera internetowego. Tak
authenticationType Określa typ uwierzytelniania. Dozwolone wartości to Anonimowe, Podstawowe, Szyfrowane, Windows i ClientCertificate.

Więcej właściwości i przykładów JSON dla tych typów uwierzytelniania można znaleźć w kolejnych sekcjach tego artykułu.
Tak
enableServerCertificateValidation Określa, czy należy włączyć weryfikację certyfikatu TLS/SSL serwera, jeśli źródłem jest serwer internetowy HTTPS. Gdy serwer HTTPS używa certyfikatu z podpisem własnym, ustaw wartość false. Nie
(wartość domyślna to true)
gatewayName Nazwa wystąpienia usługi Zarządzanie danymi Gateway, które ma być używane do nawiązywania połączenia z lokalnym źródłem HTTP. Tak, jeśli kopiujesz dane z lokalnego źródła HTTP
encryptedCredential Zaszyfrowane poświadczenia umożliwiające uzyskanie dostępu do punktu końcowego HTTP. Wartość jest generowana automatycznie podczas konfigurowania informacji uwierzytelniania w kreatorze kopiowania lub przy użyciu okna dialogowego ClickOnce. Nie
(mają zastosowanie tylko w przypadku kopiowania danych z lokalnego serwera HTTP)

Aby uzyskać szczegółowe informacje na temat ustawiania poświadczeń dla lokalnego źródła danych łącznika HTTP, zobacz Przenoszenie danych między źródłami lokalnymi a chmurą przy użyciu usługi Zarządzanie danymi Gateway.

Korzystanie z uwierzytelniania podstawowego, szyfrowego lub Windows

Ustaw wartość authenticationType na Wartość Podstawowa, Skrót lub Windows. Oprócz ogólnych właściwości łącznika HTTP opisanych w poprzednich sekcjach ustaw następujące właściwości:

Właściwość Opis Wymagane
userName Nazwa użytkownika używana do uzyskiwania dostępu do punktu końcowego HTTP. Tak
hasło Hasło użytkownika (nazwa użytkownika). Tak

Przykład: korzystanie z uwierzytelniania podstawowego, szyfrowego lub Windows

{
    "name": "HttpLinkedService",
    "properties":
    {
        "type": "Http",
        "typeProperties":
        {
            "authenticationType": "basic",
            "url" : "https://en.wikipedia.org/wiki/",
            "userName": "user name",
            "password": "password"
        }
    }
}

Korzystanie z uwierzytelniania ClientCertificate

Aby użyć uwierzytelniania podstawowego, ustaw wartość authenticationType na ClientCertificate. Oprócz ogólnych właściwości łącznika HTTP opisanych w poprzednich sekcjach ustaw następujące właściwości:

Właściwość Opis Wymagane
embeddedCertData Zawartość zakodowana w formacie Base64 danych binarnych pliku PFX. Określ element embeddedCertData lub certThumbprint
certThumbprint Odcisk palca certyfikatu zainstalowanego w magazynie certyfikatów maszyny bramy. Zastosuj tylko w przypadku kopiowania danych z lokalnego źródła HTTP. Określ element embeddedCertData lub certThumbprint
hasło Hasło skojarzone z certyfikatem. Nie

Jeśli używasz narzędzia certThumbprint do uwierzytelniania, a certyfikat jest zainstalowany w magazynie osobistym komputera lokalnego, przyznaj uprawnienia do odczytu usłudze bramy:

  1. Otwórz konsolę Microsoft Management Console (MMC). Dodaj przystawkę Certyfikaty , która jest przeznaczona dla komputera lokalnego.
  2. Rozwiń węzeł CertyfikatyPersonal, a następnie wybierz pozycję Certyfikaty>.
  3. Kliknij prawym przyciskiem myszy certyfikat z magazynu osobistego, a następnie wybierz pozycję WszystkiezadaniaZarządzanie kluczami> prywatnymi.
  4. Na karcie Zabezpieczenia dodaj konto użytkownika, w ramach którego jest uruchomiona usługa hosta bramy Zarządzanie danymi z dostępem do odczytu do certyfikatu.

Przykład: używanie certyfikatu klienta

Ta połączona usługa łączy fabrykę danych z lokalnym serwerem internetowym HTTP. Używa certyfikatu klienta zainstalowanego na komputerze z zainstalowaną Zarządzanie danymi Gateway.

{
    "name": "HttpLinkedService",
    "properties":
    {
        "type": "Http",
        "typeProperties":
        {
            "authenticationType": "ClientCertificate",
            "url": "https://en.wikipedia.org/wiki/",
            "certThumbprint": "thumbprint of certificate",
            "gatewayName": "gateway name"
        }
    }
}

Przykład: używanie certyfikatu klienta w pliku

Ta połączona usługa łączy fabrykę danych z lokalnym serwerem internetowym HTTP. Używa on pliku certyfikatu klienta na maszynie z zainstalowaną Zarządzanie danymi Gateway.

{
    "name": "HttpLinkedService",
    "properties":
    {
        "type": "Http",
        "typeProperties":
        {
            "authenticationType": "ClientCertificate",
            "url": "https://en.wikipedia.org/wiki/",
            "embeddedCertData": "Base64-encoded cert data",
            "password": "password of cert"
        }
    }
}

Właściwości zestawu danych

Niektóre sekcje pliku JSON zestawu danych, takie jak struktura, dostępność i zasady, są podobne dla wszystkich typów zestawów danych (Azure SQL Database, Azure Blob Storage, Azure Table Storage).

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz Tworzenie zestawów danych.

Sekcja typeProperties jest inna dla każdego typu zestawu danych. Sekcja typeProperties zawiera informacje o lokalizacji danych w magazynie danych. Sekcja typeProperties dla zestawu danych typu Http ma następujące właściwości:

Właściwość Opis Wymagane
typ Typ zestawu danych musi być ustawiony na Http. Tak
relativeUrl Względny adres URL zasobu, który zawiera dane. Jeśli ścieżka nie jest określona, używany jest tylko adres URL określony w definicji połączonej usługi.

Aby utworzyć dynamiczny adres URL, możesz użyć funkcji usługi Data Factory i zmiennych systemowych. Przykład: relativeUrl: $$Text.Format('/my/report?month={0:yyyy}-{0:MM}&fmt=csv', SliceStart).
Nie
requestMethod Metoda HTTP. Dozwolone wartości to GET i POST. Nie
(wartość domyślna to GET)
additionalHeaders Dodatkowe nagłówki żądań HTTP. Nie
requestBody Treść żądania HTTP. Nie
format Jeśli chcesz pobrać dane z punktu końcowego HTTP bez analizowania, pomiń ustawienie formatu .

Jeśli chcesz przeanalizować zawartość odpowiedzi HTTP podczas kopiowania, obsługiwane są następujące typy formatów: TextFormat, JsonFormat, AvroFormat, OrcFormat i ParquetFormat. Aby uzyskać więcej informacji, zobacz Format tekstu, Format JSON, Format Avro, Format Orc i Parquet Format.
Nie
kompresja Określ typ i poziom kompresji danych. Obsługiwane typy: GZip, Deflate, BZip2 i ZipDeflate. Obsługiwane poziomy: optymalne i najszybsze. Aby uzyskać więcej informacji, zobacz Formaty plików i kompresji w Azure Data Factory. Nie

Przykład: używanie metody GET (domyślnej)

{
  "name": "HttpSourceDataInput",
    "properties": {
    "type": "Http",
        "linkedServiceName": "HttpLinkedService",
        "typeProperties": {
          "relativeUrl": "XXX/test.xml",
          "additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Przykład: używanie metody POST

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "Http",
        "linkedServiceName": "HttpLinkedService",
        "typeProperties": {
            "relativeUrl": "/XXX/test.xml",
       "requestMethod": "Post",
            "requestBody": "body for POST HTTP request"
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Właściwości działania kopiowania

Właściwości takie jak nazwa, opis, tabele wejściowe i wyjściowe oraz zasady są dostępne dla wszystkich typów działań.

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz Tworzenie potoków.

Właściwości dostępne w sekcji typeProperties działania różnią się w zależności od typu działania. W przypadku działania kopiowania właściwości różnią się w zależności od typów źródeł i ujść.

Obecnie, gdy źródło w działaniu kopiowania jest typu HttpSource , obsługiwane są następujące właściwości:

Właściwość Opis Wymagane
httpRequestTimeout Limit czasu (wartość TimeSpan ) żądania HTTP w celu uzyskania odpowiedzi. Jest to limit czasu pobierania odpowiedzi, a nie limit czasu odczytu danych odpowiedzi. Nie
(wartość domyślna: 00:01:40)

Obsługiwane formaty plików i kompresji

Aby uzyskać więcej informacji, zobacz Formaty plików i kompresji w Azure Data Factory.

Przykłady kodu JSON

W poniższych przykładach przedstawiono przykładowe definicje JSON, których można użyć do utworzenia potoku przy użyciu Visual Studio lub Azure PowerShell. W przykładach pokazano, jak skopiować dane ze źródła HTTP do usługi Azure Blob Storage. Dane można jednak skopiować bezpośrednio z dowolnego źródła do dowolnego z ujść obsługiwanych przy użyciu działania kopiowania w Azure Data Factory.

Przykład: kopiowanie danych ze źródła HTTP do usługi Azure Blob Storage

Rozwiązanie usługi Data Factory dla tego przykładu zawiera następujące jednostki usługi Data Factory:

Przykład kopiuje dane ze źródła HTTP do obiektu blob platformy Azure co godzinę. Właściwości JSON używane w tych przykładach opisano w sekcjach, które są zgodne z przykładami.

Połączona usługa HTTP

W tym przykładzie użyto połączonej usługi HTTP z uwierzytelnianiem anonimowym. Zobacz Połączona usługa HTTP , aby użyć różnych typów uwierzytelniania.

{
    "name": "HttpLinkedService",
    "properties":
    {
        "type": "Http",
        "typeProperties":
        {
            "authenticationType": "Anonymous",
            "url" : "https://en.wikipedia.org/wiki/"
        }
    }
}

Połączona usługa Azure Storage

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>"
    }
  }
}

Zestaw danych wejściowych HTTP

Ustawienie wartości zewnętrznej na wartość true informuje usługę Data Factory, że zestaw danych jest zewnętrzny dla fabryki danych i nie jest generowany przez działanie w fabryce danych.

{
  "name": "HttpSourceDataInput",
    "properties": {
    "type": "Http",
        "linkedServiceName": "HttpLinkedService",
        "typeProperties": {
            "relativeUrl": "$$Text.Format('/my/report?month={0:yyyy}-{0:MM}&fmt=csv', SliceStart)",
        "additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
    },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Wyjściowy zestaw danych obiektów blob platformy Azure

Dane są zapisywane w nowym obiekcie blob co godzinę (częstotliwość: godzina, interwał: 1).

{
    "name": "AzureBlobOutput",
    "properties":
    {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties":
        {
            "folderPath": "adfgetstarted/Movies"
        },
        "availability":
        {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Potok korzystający z działania kopiowania

Potok zawiera działanie kopiowania skonfigurowane do używania wejściowych i wyjściowych zestawów danych. Działanie kopiowania jest zaplanowane do uruchamiania co godzinę. W definicji JSON potoku typ źródła jest ustawiony na HttpSource , a typ ujścia jest ustawiony na BlobSink.

Aby uzyskać listę właściwości, które obsługuje usługa HttpSource , zobacz HttpSource.

{  
    "name":"SamplePipeline",
    "properties":{  
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline with a copy activity",
    "activities":[  
      {
        "name": "HttpSourceToAzureBlob",
        "description": "Copy from an HTTP source to an Azure blob",
        "type": "Copy",
        "inputs": [
          {
            "name": "HttpSourceDataInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "HttpSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
      ]
   }
}

Uwaga

Aby zamapować kolumny ze źródłowego zestawu danych na kolumny z zestawu danych ujścia, zobacz Mapowanie kolumn zestawu danych w Azure Data Factory.

Wydajności i dostosowywanie

Aby dowiedzieć się więcej o kluczowych czynnikach wpływających na wydajność przenoszenia danych (działanie kopiowania) w Azure Data Factory i różnych sposobach ich optymalizacji, zobacz Przewodnik dotyczący wydajności i dostrajania działania kopiowania.