Działanie internetowe w Azure Data Factory i Azure Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Wskazówka

Data Factory w usłudze Microsoft Fabric jest następną generacją Azure Data Factory z prostszą architekturą, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz integrować dane, zacznij od Fabric Data Factory. Istniejące obciążenia ADF można zaktualizować do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analiz w czasie rzeczywistym oraz raportowania.

Działanie Web może służyć do wywoływania niestandardowego punktu końcowego REST z potoku Azure Data Factory lub Synapse. Można przekazywać zestawy danych i połączone usługi do wykorzystania i dostępu przez działanie.

Uwaga

Działanie internetowe jest obsługiwane w przypadku wywoływania adresów URL hostowanych w prywatnej sieci wirtualnej, a także przy użyciu własnego środowiska Integration Runtime. Środowisko Integration Runtime powinno mieć bezpośredni dostęp do punktu końcowego adresu URL.

Uwaga

Maksymalny obsługiwany rozmiar ładunku odpowiedzi wyjściowej to 4 MB.

Tworzenie działania internetowego za pomocą interfejsu użytkownika

Aby wykorzystać działanie sieci Web w potoku, wykonaj następujące kroki:

  1. Wyszukaj Web w okienku Działania potoku i przeciągnij aktywność Web na kanwę potoku.

  2. Wybierz nową aktywność sieci Web na kanwie, jeśli nie jest jeszcze wybrana, oraz jej kartę Ustawienia w celu edycji szczegółów.

    Pokazuje interfejs użytkownika dla działania internetowego.

  3. Określ adres URL, który może być ciągiem adresu URL literału lub dowolną kombinacją wyrażeń dynamicznych , funkcji, zmiennych systemowych lub danych wyjściowych z innych działań. Podaj inne szczegóły, które mają zostać przesłane z żądaniem.

  4. Użyj danych wyjściowych z działania jako danych wejściowych do dowolnego innego działania i odwołuj się do danych wyjściowych w dowolnym miejscu zawartości dynamicznej obsługiwanej w działaniu docelowym.

Składnia

{
   "name":"MyWebActivity",
   "type":"WebActivity",
   "typeProperties":{
      "method":"Post",
      "url":"<URLEndpoint>",
      "httpRequestTimeout": "00:01:00"
      "connectVia": {
          "referenceName": "<integrationRuntimeName>",
          "type": "IntegrationRuntimeReference"
      }
      "headers":{
         "Content-Type":"application/json"
      },
      "authentication":{
         "type":"ClientCertificate",
         "pfx":"****",
         "password":"****"
      },
      "datasets":[
         {
            "referenceName":"<ConsumedDatasetName>",
            "type":"DatasetReference",
            "parameters":{
               ...
            }
         }
      ],
      "linkedServices":[
         {
            "referenceName":"<ConsumedLinkedServiceName>",
            "type":"LinkedServiceReference"
         }
      ]
   }
}

Właściwości typu

Właściwości opis Dozwolone wartości Wymagane
nazwa Nazwa działania internetowego String Tak
typ Musi być ustawiona wartość WebActivity. String Tak
metoda Metoda interfejsu API REST dla docelowego punktu końcowego. Struna.

Obsługiwane typy: "GET", "POST", "PUT", "PATCH", "DELETE"
Tak
Adres URL Docelowy punkt końcowy i ścieżka Ciąg (lub wyrażenie z wartością resultType ciągu). Działanie zostanie przerwane po 1 minucie z błędem, jeśli nie otrzyma odpowiedzi z punktu końcowego. Ten limit czasu odpowiedzi można zwiększyć do 10 minut, aktualizując właściwość httpRequestTimeout Tak
limit czasu żądania HTTP Czas trwania limitu czasu na odpowiedź hh:mm:ss z maksymalną wartością 00:10:00. Jeśli nie określono jawnie, ustawia się na wartość domyślną 00:01:00. Nie.
nagłówki Nagłówki wysyłane z zapytaniem. Aby na przykład ustawić język i typ żądania: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Ciąg (lub wyrażenie z wartością resultType ciągu) Nie.
obudowa Reprezentuje ładunek, który jest wysyłany do punktu końcowego. Ciąg (lub wyrażenie z wartością resultType ciągu).

Zobacz schemat treści żądania w sekcji Schemat treści żądania.
Wymagane dla metod POST/PUT/PATCH. Opcjonalnie dla metody DELETE.
uwierzytelnianie Metoda uwierzytelniania używana do wywoływania punktu końcowego. Obsługiwane typy to "Podstawowe, Certyfikat klienta, Tożsamość zarządzana przypisana przez system, Tożsamość zarządzana przypisana przez użytkownika, oraz Podmiot usługi." Aby uzyskać więcej informacji, zobacz sekcję Uwierzytelnianie. Jeśli uwierzytelnianie nie jest wymagane, wyklucz tę właściwość. Ciąg (lub wyrażenie z wartością resultType ciągu) Nie.
turnOffAsync Opcja wyłączenia wywoływania żądania HTTP GET względem pola lokalizacji w nagłówku odpowiedzi HTTP 202. Jeśli ustawiono wartość true, zatrzyma wywołanie żądania HTTP GET w lokalizacji http podanej w nagłówku odpowiedzi. Jeśli ustawisz wartość false, nadal wywołuje wywołanie HTTP GET w lokalizacji podanej w nagłówkach odpowiedzi http. Dozwolone wartości to false (wartość domyślna) i true. Nie.
disableCertValidation (wyłącz walidację certyfikatu) Usuwa weryfikację certyfikatu po stronie serwera (niezalecane, chyba że nawiązujesz połączenie z zaufanym serwerem, który nie używa standardowego certyfikatu urzędu certyfikacji). Dozwolone wartości to false (wartość domyślna) i true. Nie.
zestawy danych Lista zestawów danych przekazanych do punktu końcowego. Tablica odwołań do zestawu danych. Może być pustą tablicą. Tak
linkedServices Lista połączonych usług przekazanych do punktu końcowego. Tablica odwołań do połączonych usług. Może być pustą tablicą. Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Możesz użyć środowiska Integration Runtime Azure lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli ta właściwość nie zostanie określona, usługa używa domyślnego Azure integration runtime. Dokumentacja środowiska Integration Runtime. Nie.

Uwaga

Punkty końcowe interfejsu REST, które wywołują działanie w sieci Web, muszą zwracać odpowiedź typu JSON. Działanie zostanie przerwane po 1 minucie z błędem, jeśli nie otrzyma odpowiedzi z punktu końcowego. W przypadku punktów końcowych, które obsługują wzorzec asynchronicznego Request-Reply, aktywność sieciowa nadal czeka, nie przekraczając limitu czasu (do 7 dni), lub dopóki punkty końcowe nie sygnalizują ukończenia zadania.

W poniższej tabeli przedstawiono wymagania dotyczące zawartości JSON:

Typ wartości Treść żądania Treść odpowiedzi
Obiekt JSON Obsługiwane Obsługiwane
Tablica JSON Obsługiwane
(Obecnie tablice JSON nie działają w wyniku usterki. Poprawka jest w toku).
Nieobsługiwane
Wartość JSON Obsługiwane Nieobsługiwane
Typ innego niż JSON Nieobsługiwane Nieobsługiwane

Uwierzytelnianie

Poniżej przedstawiono obsługiwane typy uwierzytelniania w działaniu internetowym.

Brak

Jeśli uwierzytelnianie nie jest wymagane, nie uwzględniaj właściwości "uwierzytelnianie".

Basic

Określ nazwę użytkownika i hasło do użycia z uwierzytelnianiem podstawowym.

"authentication":{
   "type":"Basic",
   "username":"****",
   "password":"****"
}

Certyfikat klienta

Określ zakodowaną w formacie base64 zawartość pliku PFX i hasło.

"authentication":{
   "type":"ClientCertificate",
   "pfx":"****",
   "password":"****"
}

Certyfikat musi być certyfikatem x509. Do konwersji na plik PFX możesz użyć ulubionego narzędzia. W przypadku kodowania base-64 można użyć następującego fragmentu kodu programu PowerShell.

$fileContentBytes = get-content 'enr.dev.webactivity.pfx' -AsByteStream

[System.Convert]::ToBase64String($fileContentBytes) | Out-File ‘pfx-encoded-bytes.txt’

Tożsamość zarządzana

Określ identyfikator URI zasobu, dla którego będzie żądany token dostępu, używając tożsamości zarządzanej dla Data Factory lub wystąpienia Synapse Workspace. Aby wywołać interfejs API zarządzania zasobami Azure, użyj https://management.azure.com/. Aby uzyskać więcej informacji na temat sposobu działania tożsamości zarządzanych, zobacz stronę przeglądową tożsamości zarządzanych dla zasobów Azure .

"authentication": {
	"type": "MSI",
	"resource": "https://management.azure.com/"
}

Uwaga

Jeśli fabryka danych lub obszar roboczy usługi Synapse jest skonfigurowany przy użyciu repozytorium git, musisz przechowywać poświadczenia w Azure Key Vault, aby używać uwierzytelniania podstawowego lub certyfikatu klienta. Usługa nie przechowuje haseł w usłudze git.

Obiekt usługi

Określ identyfikator dzierżawy, identyfikator jednostki usługi oraz klucz jednostki usługi, używając bezpiecznego ciągu dla sekretu klienta.

"authentication": {
            "type": "ServicePrincipal",
            "tenant": "your_tenant_id",
            "servicePrincipalId": "your_client_id",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "your_client_secret"
            },
            "resource": "https://management.azure.com/"
}

Schemat ładunku żądania

Jeśli używasz metody POST/PUT, właściwość body reprezentuje ładunek, który jest wysyłany do punktu końcowego. Połączone usługi i zestawy danych można przekazywać w ramach ładunku. Oto schemat ładunku:

{
    "body": {
        "myMessage": "Sample",
        "datasets": [{
            "name": "MyDataset1",
            "properties": {
                ...
            }
        }],
        "linkedServices": [{
            "name": "MyStorageLinkedService1",
            "properties": {
                ...
            }
        }]
    }
}

Przykład

W tym przykładzie działanie internetowe w procesie odwołuje się do punktu końcowego REST. Przekazuje ona połączoną usługę Azure SQL i zestaw danych Azure SQL do punktu końcowego. Punkt końcowy REST używa Azure SQL connection string do nawiązania połączenia z serwerem logicznym SQL i zwraca nazwę wystąpienia programu SQL Server.

Definicja potoku

{
    "name": "<MyWebActivityPipeline>",
    "properties": {
        "activities": [
            {
                "name": "<MyWebActivity>",
                "type": "WebActivity",
                "typeProperties": {
                    "method": "Post",
                    "url": "@pipeline().parameters.url",
                    "headers": {
                        "Content-Type": "application/json"
                    },
                    "authentication": {
                        "type": "ClientCertificate",
                        "pfx": "*****",
                        "password": "*****"
                    },
                    "datasets": [
                        {
                            "referenceName": "MySQLDataset",
                            "type": "DatasetReference",
                            "parameters": {
                                "SqlTableName": "@pipeline().parameters.sqlTableName"
                            }
                        }
                    ],
                    "linkedServices": [
                        {
                            "referenceName": "SqlLinkedService",
                            "type": "LinkedServiceReference"
                        }
                    ]
                }
            }
        ],
        "parameters": {
            "sqlTableName": {
                "type": "String"
            },
            "url": {
                "type": "String"
            }
        }
    }
}

Wartości parametrów procesu rurociągowego

{
    "sqlTableName": "department",
    "url": "https://adftes.azurewebsites.net/api/execute/running"
}

Kod punktu końcowego usługi internetowej


[HttpPost]
public HttpResponseMessage Execute(JObject payload)
{
    Trace.TraceInformation("Start Execute");

    JObject result = new JObject();
    result.Add("status", "complete");

    JArray datasets = payload.GetValue("datasets") as JArray;
    result.Add("sinktable", datasets[0]["properties"]["typeProperties"]["tableName"].ToString());

    JArray linkedServices = payload.GetValue("linkedServices") as JArray;
    string connString = linkedServices[0]["properties"]["typeProperties"]["connectionString"].ToString();

    System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(connString);

    result.Add("sinkServer", sqlConn.DataSource);

    Trace.TraceInformation("Stop Execute");

    return this.Request.CreateResponse(HttpStatusCode.OK, result);
}

Zobacz inne obsługiwane działania przepływu sterowania: