Udostępnij za pośrednictwem


Aktywność internetowa w usługach Azure Data Factory i Azure Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

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

Uwaga

Działanie w sieci Web jest obsługiwane w przypadku wywoływania adresów URL, które są hostowane w prywatnej sieci wirtualnej, a także przy użyciu własnego środowiska Integration Runtime. Środowisko Integration Runtime powinno mieć wgląd w punkt końcowy adresu URL.

Uwaga

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

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

Aby użyć działania sieci Web w potoku, wykonaj następujące kroki:

  1. Wyszukaj pozycję Sieć Web w okienku Działania potoku i przeciągnij działanie internetowe na kanwę potoku.

  2. Wybierz nowe działanie sieci Web na kanwie, jeśli nie zostało jeszcze wybrane, a jego karta Ustawienia , aby edytować jego szczegóły.

    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 Wymagania
name Nazwa działania internetowego String Tak
type 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 przekroczone o 1 minutę z powodu błędu, 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
httpRequestTimeout Czas trwania limitu czasu odpowiedzi hh:mm:ss z maksymalną wartością 00:10:00. Jeśli nie określono jawnie określonych wartości domyślnych na 00:01:00 Nie.
nagłówki Nagłówki wysyłane do żądania. 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.
treść Reprezentuje ładunek, który jest wysyłany do punktu końcowego. Ciąg (lub wyrażenie z wartością resultType ciągu).

Zobacz schemat ładunku żądania w sekcji Schemat ładunku żą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 "Podstawowa, Certyfikat klienta, tożsamość zarządzana przypisana przez system, tożsamość zarządzana przypisana przez użytkownika, jednostka 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 w polu lokalizacji w nagłówku odpowiedzi HTTP 202 Response. 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 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.
usługi Power BI 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łączonej usługi. Może być pustą tablicą. Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Możesz użyć środowiska Azure Integration Runtime 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 środowiska 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. Limit czasu działania zostanie przekroczony za 1 minutę z błędem, jeśli nie otrzyma odpowiedzi z punktu końcowego. W przypadku punktów końcowych, które obsługują wzorzec asynchronicznego żądania i odpowiedzi, działanie internetowe będzie nadal czekać bez limitu czasu (maksymalnie 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 błędu. 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 dołączaj właściwości "authentication".

Podstawowy

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 przy użyciu tożsamości zarządzanej dla fabryki danych lub wystąpienia obszaru roboczego usługi Synapse. Aby wywołać interfejs API usługi Azure Resource Management, użyj polecenia https://management.azure.com/. Aby uzyskać więcej informacji na temat sposobu działania tożsamości zarządzanych, zobacz stronę przeglądu tożsamości zarządzanych dla zasobów platformy Azure.

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

Uwaga

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

Jednostka usługi

Określ identyfikator dzierżawy, identyfikator jednostki usługi i klucz jednostki usługi przy użyciu bezpiecznego ciągu klucza tajnego 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 potoku wywołuje punkt końcowy REST. Przekazuje ona połączoną usługę Azure SQL i zestaw danych Azure SQL do punktu końcowego. Punkt końcowy REST używa usługi Azure SQL parametry połączenia do nawiązywania 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 potoku

{
    "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: