Webbaktivitet i Azure Data Factory och 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!

Webbaktivitet kan användas för att anropa en anpassad REST-slutpunkt från en Azure Data Factory- eller Synapse-pipeline. Du kan överföra datauppsättningar och länkade tjänster så att de förbrukas och används av aktiviteten.

Kommentar

Webbaktivitet har stöd för anrop av URL:er som finns i ett privat virtuellt nätverk och användning av lokalt installerad integrationskörning. Integrationskörningen bör fri sikt till URL-slutpunkten.

Kommentar

Den maximala utdatasvarsnyttolaststorleken som stöds är 4 MB.

Skapa en webbaktivitet med användargränssnittet

Utför följande steg för att använda en webbaktivitet i en pipeline:

  1. Sök efter webben i fönstret Pipelineaktiviteter och dra en webbaktivitet till pipelinearbetsytan.

  2. Välj den nya webbaktiviteten på arbetsytan om den inte redan är markerad och fliken Inställningar för att redigera dess information.

    Shows the UI for a Web activity.

  3. Ange en URL, som kan vara en literal-URL-sträng, eller en kombination av dynamiska uttryck, funktioner, systemvariabler eller utdata från andra aktiviteter. Ange annan information som ska skickas med begäran.

  4. Använd utdata från aktiviteten som indata till andra aktiviteter och referera till utdata var som helst där dynamiskt innehåll stöds i målaktiviteten.

Syntax

{
   "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"
         }
      ]
   }
}

Typegenskaper

Property beskrivning Tillåtna värden Obligatoriskt
name Namnet på webbaktiviteten String Ja
type Måste anges till WebActivity. String Ja
metod REST API-metod för målslutpunkten. Sträng.

Typer som stöds: "GET", "POST", "PUT", "PATCH", "DELETE"
Ja
URL Målslutpunkt och sökväg Sträng (eller uttryck med resultType av sträng). Aktiviteten avbryts efter 1 minut med ett fel om den inte får något svar från slutpunkten. Du kan öka den här tidsgränsen för svar upp till 10 minuter genom att uppdatera egenskapen httpRequestTimeout Ja
httpRequestTimeout Varaktighet för tidsgräns för svar hh:mm:ss med maxvärdet 00:10:00. Om inte uttryckligen anges är standardvärdet 00:01:00 Nej
rubriker Rubriker som skickas till begäran. Om du till exempel vill ange språket och skriva på en begäran: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Sträng (eller uttryck med resultType of string) Nej
brödtext Representerar nyttolasten som skickas till slutpunkten. Sträng (eller uttryck med resultType av sträng).

Se schemat för nyttolasten för begäran i avsnittet Schema för nyttolast för begäran.
Krävs för POST/PUT/PATCH-metoder. Valfritt för DELETE-metoden.
autentisering Autentiseringsmetod som används för att anropa slutpunkten. Typer som stöds är "Grundläggande, Klientcertifikat, Systemtilldelad hanterad identitet, användartilldelad hanterad identitet, tjänstens huvudnamn". Mer information finns i avsnittet Autentisering . Om autentisering inte krävs undantar du den här egenskapen. Sträng (eller uttryck med resultType of string) Nej
turnOffAsync Alternativ för att inaktivera anrop av HTTP GET på platsfältet i svarshuvudet för ett HTTP 202-svar. Om värdet är sant slutar det att anropa HTTP GET på http-platsen som anges i svarshuvudet. Om värdet är falskt fortsätter det att anropa HTTP GET-anropet på den plats som anges i http-svarshuvuden. Tillåtna värden är false (standard) och true. Nej
disableCertValidation Tar bort certifikatverifiering på serversidan (rekommenderas inte om du inte ansluter till en betrodd server som inte använder ett standardcertifikatutfärdarcertifikat). Tillåtna värden är false (standard) och true. Nej
datauppsättningar Lista över datauppsättningar som skickas till slutpunkten. Matris med datamängdsreferenser. Kan vara en tom matris. Ja
linkedServices Lista över länkade tjänster som skickas till slutpunkten. Matris med länkade tjänstreferenser. Kan vara en tom matris. Ja
connectVia Den integrationskörning som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime eller integrationskörningen med egen värd (om ditt datalager finns i ett privat nätverk). Om den här egenskapen inte har angetts använder tjänsten standardkörningen för Azure-integrering. Referensen för integrationskörning. Nej

Kommentar

REST-slutpunkter som webbaktiviteten anropar måste returnera ett svar av typen JSON. Aktiviteten avbryts efter 1 minut med ett fel om den inte får något svar från slutpunkten. För slutpunkter som stöder Asynkront mönster för begäran-svar fortsätter webbaktiviteten att vänta utan tidsgräns (upp till 7 dagar) eller tills slutpunkterna signalerar att jobbet har slutförts.

I följande tabell visas kraven för JSON-innehåll:

Värdetyp Begärandetext Själva svaret
JSON-objekt Stöds Stöds
JSON-matris Stöds
(För närvarande fungerar inte JSON-matriser på grund av en bugg. En korrigering pågår.)
Stöd saknas
JSON-värde Stöds Stöd saknas
Icke-JSON-typ Stöd saknas Stöd saknas

Autentisering

Nedan visas de autentiseringstyper som stöds i webbaktiviteten.

Ingen

Om autentisering inte krävs ska du inte inkludera egenskapen "autentisering".

Grundläggande

Ange användarnamn och lösenord som ska användas med grundläggande autentisering.

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

Klientcertifikat

Ange base64-kodat innehåll i en PFX-fil och lösenordet.

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

Certifikatet måste vara ett x509-certifikat. För konvertering till PFX-fil kan du använda ditt favoritverktyg. För base-64-kodning kan du använda följande PowerShell-kodavsnitt.

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

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

Hanterad identitet

Ange den resurs-URI som åtkomsttoken ska begäras för med hjälp av den hanterade identiteten för datafabriken eller Synapse-arbetsytans instans. Om du vill anropa Azure Resource Management-API:et använder du https://management.azure.com/. Mer information om hur hanterade identiteter fungerar finns på översiktssidan för hanterade identiteter för Azure-resurser.

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

Kommentar

Om din datafabrik eller Synapse-arbetsyta har konfigurerats med en git-lagringsplats måste du lagra dina autentiseringsuppgifter i Azure Key Vault för att använda grundläggande autentisering eller klientcertifikatautentisering. Tjänsten lagrar inte lösenord i git.

Schema för att begära nyttolast

När du använder POST/PUT-metoden representerar brödtextegenskapen nyttolasten som skickas till slutpunkten. Du kan skicka länkade tjänster och datauppsättningar som en del av nyttolasten. Här är schemat för nyttolasten:

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

Exempel

I det här exemplet anropar webbaktiviteten i pipelinen en REST-slutpunkt. Den skickar en länkad Azure SQL-tjänst och en Azure SQL-datauppsättning till slutpunkten. REST-slutpunkten använder Azure SQL-anslutningssträng för att ansluta till den logiska SQL-servern och returnerar namnet på sql-serverns instans.

Pipelinedefinition

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

Pipelineparametervärden

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

Slutpunktskod för webbtjänst


[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);
}

Se andra kontrollflödesaktiviteter som stöds: