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 .
De Webactiviteit kan worden gebruikt om een aangepast REST-eindpunt aan te roepen vanaf een Azure Data Factory of Synapse-automatisering. 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:
Zoek naar internet in het deelvenster Pijplijnactiviteiten en sleep een webactiviteit naar het pijplijncanvas.
Selecteer de nieuwe webactiviteit op het canvas als deze nog niet is geselecteerd en het tabblad Instellingen om de details ervan te bewerken.
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.
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 |
---|---|---|---|
naam | Naam van de webactiviteit | String | Ja |
type | Moet worden ingesteld op WebActivity. | String | Ja |
methode | REST API-methode voor het doeleindpunt. | Snaar. Ondersteunde typen: 'GET', 'POST', 'PUT', 'PATCH', 'DELETE' |
Ja |
URL | Doeleindpunt en -pad | Tekenreeks (of expressie met resultType van tekenreeks). Er treedt een time-out op voor de activiteit op 1 minuut met een fout als er geen antwoord 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 in het 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.
Service-principal
Geef de tenant-id, service-principal-id en service-principalsleutel op met behulp van een beveiligde tekenreeks voor het clientgeheim.
"authentication": {
"type": "ServicePrincipal",
"tenant": "your_tenant_id",
"servicePrincipalId": "your_client_id",
"servicePrincipalKey": {
"type": "SecureString",
"value": "your_client_secret"
},
"resource": "https://management.azure.com/"
}
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);
}
Gerelateerde inhoud
Bekijk andere ondersteunde controlestroomactiviteiten: