Webactiviteit in Azure Data Factory en Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Webactiviteit kan worden gebruikt om een aangepast REST-eindpunt aan te roepen vanuit een Azure Data Factory- of Synapse-pijplijn. U kunt gegevenssets en gekoppelde services doorgeven die moten worden verbruikt door en die toegankelijk zijn voor de activiteit.

Notitie

Webactiviteit wordt ondersteund voor het aanroepen van URL's die worden gehost in een virtueel privénetwerk, door gebruik te maken van zelf-hostende integratieruntime. De integratieruntime moet het URL-eindpunt kunnen bereiken.

Notitie

De maximale grootte van de ondersteunde nettolading van het uitvoerantwoord is 4 MB.

Een webactiviteit maken met de gebruikersinterface

Voer de volgende stappen uit om een webactiviteit in een pijplijn te gebruiken:

  1. Zoek naar internet in het deelvenster Pijplijnactiviteiten en sleep een webactiviteit naar het pijplijncanvas.

  2. Selecteer de nieuwe webactiviteit op het canvas als deze nog niet is geselecteerd en het bijbehorende tabblad Instellingen om de details ervan te bewerken.

    Shows the UI for a Web activity.

  3. Geef een URL op, die een letterlijke URL-tekenreeks kan zijn of een combinatie van dynamische expressies, functies, systeemvariabelen of uitvoer van andere activiteiten. Geef andere gegevens op die bij de aanvraag moeten worden ingediend.

  4. Gebruik de uitvoer van de activiteit als invoer voor andere activiteiten en verwijs naar de uitvoer waar dynamische inhoud wordt ondersteund in de doelactiviteit.

Syntaxis

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

Typeeigenschappen

Eigenschappen Beschrijving Toegestane waarden Vereist
name Naam van de webactiviteit String Ja
type Moet worden ingesteld op WebActivity. String Ja
methode REST API-methode voor het doeleindpunt. Tekenreeks.

Ondersteunde typen: 'GET', 'POST', 'PUT', 'PATCH', 'DELETE'
Ja
URL Doeleindpunt en -pad Tekenreeks (of expressie met resultType van tekenreeks). Voor de activiteit wordt een time-out van één minuut met een fout weergegeven als er geen respons van het eindpunt wordt ontvangen. U kunt deze reactietime-out tot 10 minuten verhogen door de eigenschap httpRequestTimeout bij te werken Ja
httpRequestTimeout Time-outduur van reactie uu:mm:ss met de maximale waarde als 00:10:00. Als de standaardwaarden niet expliciet zijn opgegeven op 00:01:00 Nee
headers Headers die naar de aanvraag worden verzonden. Als u bijvoorbeeld de taal wilt instellen en typt op een aanvraag: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Tekenreeks (of expressie met resultType van tekenreeks) Nee
hoofdtekst Vertegenwoordigt de nettolading die naar het eindpunt wordt verzonden. Tekenreeks (of expressie met resultType van tekenreeks).

Zie het schema van de nettolading van de aanvraag in de sectie Nettolading aanvragen.
Vereist voor POST/PUT/PATCH-methoden. Optioneel voor delete-methode.
verificatie Verificatiemethode die wordt gebruikt voor het aanroepen van het eindpunt. Ondersteunde typen zijn 'Basic, Client Certificate, Door het systeem toegewezen beheerde identiteit, door de gebruiker toegewezen beheerde identiteit, service-principal'. Zie de sectie Verificatie voor meer informatie. Als verificatie niet vereist is, sluit u deze eigenschap uit. Tekenreeks (of expressie met resultType van tekenreeks) Nee
turnOffAsync Optie voor het uitschakelen van het aanroepen van HTTP GET op locatieveld in de antwoordheader van een HTTP 202-antwoord. Als deze waar is ingesteld, wordt HTTP GET niet meer aanroepen op http-locatie die is opgegeven in de antwoordheader. Als false is ingesteld, wordt de HTTP GET-aanroep voortgezet op de locatie die is opgegeven in http-antwoordheaders. Toegestane waarden zijn onwaar (standaard) en waar. Nee
disableCertValidation Hiermee verwijdert u certificaatvalidatie aan de serverzijde (niet aanbevolen tenzij u verbinding maakt met een vertrouwde server die geen standaard-CA-certificaat gebruikt). Toegestane waarden zijn onwaar (standaard) en waar. Nee
gegevenssets Lijst met gegevenssets die zijn doorgegeven aan het eindpunt. Matrix met gegevenssetverwijzingen. Kan een lege matrix zijn. Ja
linkedServices Lijst met gekoppelde services die zijn doorgegeven aan eindpunt. Matrix van gekoppelde serviceverwijzingen. Kan een lege matrix zijn. Ja
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. U kunt de Azure Integration Runtime of de zelf-hostende Integration Runtime gebruiken (als uw gegevensarchief zich in een privénetwerk bevindt). Als deze eigenschap niet is opgegeven, gebruikt de service de standaard Azure Integration Runtime. De naslaginformatie over integration runtime. Nr.

Notitie

REST-eindpunten die door de webactiviteit worden aangeroepen, moeten een respons van het type JSON retourneren. Voor de activiteit wordt een time-out van één minuut met een fout weergegeven als er geen respons van het eindpunt wordt ontvangen. Voor eindpunten die ondersteuning bieden voor Asynchroon aanvraag-antwoordpatroon, blijft de webactiviteit wachten zonder time-out (maximaal 7 dagen) of totdat de eindpunten de voltooiing van de taak aangeeft.

In de volgende tabel ziet u de vereisten voor JSON-inhoud:

Waardetype Aanvraagtekst Hoofdtekst van de reactie
JSON-object Ondersteund Ondersteund
JSON-matrix Ondersteund
(Op dit moment werken JSON-matrices niet als gevolg van een fout. Er wordt een oplossing uitgevoerd.)
Niet ondersteund
JSON-waarde Ondersteund Niet ondersteund
Niet-JSON-type Niet ondersteund Niet ondersteund

Verificatie

Hieronder ziet u de ondersteunde verificatietypen in de webactiviteit.

Geen

Als verificatie niet vereist is, moet u de eigenschap 'verificatie' niet opnemen.

Basis

Geef de gebruikersnaam en het wachtwoord op die moeten worden gebruikt met de basisverificatie.

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

Clientcertificaat

Geef met base64 gecodeerde inhoud van een PFX-bestand en het wachtwoord op.

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

Het certificaat moet een x509-certificaat zijn. Voor conversie naar PFX-bestand kunt u uw favoriete hulpprogramma gebruiken. Voor base-64-codering kunt u het volgende PowerShell-fragment gebruiken.

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

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

Beheerde identiteit

Geef de resource-URI op waarvoor het toegangstoken wordt aangevraagd met behulp van de beheerde identiteit voor het data factory- of Synapse-werkruimte-exemplaar. Als u de Azure Resource Management-API wilt aanroepen, gebruikt u https://management.azure.com/. Zie de overzichtspagina met beheerde identiteiten voor Azure-resources voor meer informatie over hoe beheerde identiteiten werken.

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

Notitie

Als uw data factory of Synapse-werkruimte is geconfigureerd met een Git-opslagplaats, moet u uw referenties opslaan in Azure Key Vault om basis- of clientcertificaatverificatie te gebruiken. De service slaat geen wachtwoorden op in Git.

Schema voor nettolading aanvragen

Wanneer u de POST/PUT-methode gebruikt, vertegenwoordigt de hoofdteksteigenschap de nettolading die naar het eindpunt wordt verzonden. U kunt gekoppelde services en gegevenssets doorgeven als onderdeel van de nettolading. Dit is het schema voor de nettolading:

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

Opmerking

In dit voorbeeld roept de webactiviteit in de pijplijn een REST-eindpunt aan. Het geeft een gekoppelde Azure SQL-service en een Azure SQL-gegevensset door aan het eindpunt. Het REST-eindpunt maakt gebruik van de Azure SQL-verbindingsreeks om verbinding te maken met de logische SQL-server en retourneert de naam van het exemplaar van SQL Server.

Pijplijndefinitie

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

Parameterwaarden voor pijplijn

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

Code van webservice-eindpunt


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

Bekijk andere ondersteunde controlestroomactiviteiten: