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:
Wyszukaj pozycję Sieć Web w okienku Działania potoku i przeciągnij działanie internetowe na kanwę potoku.
Wybierz nowe działanie sieci Web na kanwie, jeśli nie zostało jeszcze wybrane, a jego karta Ustawienia , aby edytować jego szczegóły.
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.
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);
}
Powiązana zawartość
Zobacz inne obsługiwane działania przepływu sterowania: