Attività Web in Azure Data FactoryWeb activity in Azure Data Factory

L'attività Web può essere usata per chiamare un endpoint REST personalizzato da una pipeline di Data Factory.Web Activity can be used to call a custom REST endpoint from a Data Factory pipeline. È possibile passare set di dati e servizi collegati in modo che l'attività possa usarli e accedervi.You can pass datasets and linked services to be consumed and accessed by the activity.

Nota

L'attività Web può chiamare solo URL esposti pubblicamente.Web Activity can call only publicly exposed URLs. Non è supportata per gli URL ospitati in una rete virtuale privata.It’s not supported for URLs that are hosted in a private virtual network.

SintassiSyntax

{
   "name":"MyWebActivity",
   "type":"WebActivity",
   "typeProperties":{
      "method":"Post",
      "url":"<URLEndpoint>",
      "headers":{
         "Content-Type":"application/json"
      },
      "authentication":{
         "type":"ClientCertificate",
         "pfx":"****",
         "password":"****"
      },
      "datasets":[
         {
            "referenceName":"<ConsumedDatasetName>",
            "type":"DatasetReference",
            "parameters":{
               ...
            }
         }
      ],
      "linkedServices":[
         {
            "referenceName":"<ConsumedLinkedServiceName>",
            "type":"LinkedServiceReference"
         }
      ]
   }
}

Proprietà del tipoType properties

ProprietàProperty DescrizioneDescription Valori consentitiAllowed values ObbligatorioRequired
namename Nome dell'attività WebName of the web activity StringString Yes
typetype Deve essere impostato su WebActivity.Must be set to WebActivity. StringString Yes
staticomethod Metodo API REST per l'endpoint di destinazione.Rest API method for the target endpoint. Stringa.String.

Tipi supportati: "GET", "POST", "PUT"Supported Types: "GET", "POST", "PUT"
Yes
URLurl Endpoint e percorso di destinazioneTarget endpoint and path Stringa (o espressione con l'elemento resultType della stringa).String (or expression with resultType of string). L'attività raggiungerà il timeout a 1 minuto con un errore se non riceve una risposta dall'endpoint.The activity will timeout at 1 minute with an error if it does not receive a response from the endpoint. Yes
headersheaders Intestazioni che vengono inviate alla richiesta.Headers that are sent to the request. Ad esempio, per impostare il linguaggio e il tipo in una richiesta: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }.For example, to set the language and type on a request: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Stringa (o un'espressione con l'elemento resultType della stringa)String (or expression with resultType of string) Sì, l'intestazione Content-type è obbligatoria.Yes, Content-type header is required. "headers":{ "Content-Type":"application/json"}
bodybody Rappresenta il payload inviato all'endpoint.Represents the payload that is sent to the endpoint. Stringa (o espressione con l'elemento resultType della stringa).String (or expression with resultType of string).

Vedere lo schema del payload della richiesta nella sezione Schema del payload della richiesta.See the schema of the request payload in Request payload schema section.
Obbligatoria per i metodi POST e PUT.Required for POST/PUT methods.
authenticationauthentication Metodo di autenticazione usato per chiamare l'endpoint.Authentication method used for calling the endpoint. I tipi supportati sono "Basic" o "ClientCertificate".Supported Types are "Basic, or ClientCertificate." Per altre informazioni, vedere la sezione Autenticazione.For more information, see Authentication section. Se l'autenticazione non è necessaria, escludere questa proprietà.If authentication is not required, exclude this property. Stringa (o un'espressione con l'elemento resultType della stringa)String (or expression with resultType of string) NoNo
set di datidatasets Elenco di set di dati passato all'endpoint.List of datasets passed to the endpoint. Matrice di riferimenti a set di dati.Array of dataset references. Può essere una matrice vuota.Can be an empty array. Yes
linkedServiceslinkedServices Elenco dei servizi collegati passato all'endpoint.List of linked services passed to endpoint. Matrice di riferimenti a servizi collegati.Array of linked service references. Può essere una matrice vuota.Can be an empty array. Yes

Nota

Gli endpoint REST che l'attività Web richiama devono restituire una risposta di tipo JSON.REST endpoints that the web activity invokes must return a response of type JSON. L'attività raggiungerà il timeout a 1 minuto con un errore se non riceve una risposta dall'endpoint.The activity will timeout at 1 minute with an error if it does not receive a response from the endpoint.

La tabella seguente indica i requisiti per il contenuto JSON:The following table shows the requirements for JSON content:

Tipo di valoreValue type Corpo della richiestaRequest body Corpo della rispostaResponse body
Oggetto JSONJSON object SupportatoSupported SupportatoSupported
Matrice JSONJSON array SupportatoSupported
Al momento, le matrici JSON non funzionano per via di un bug.(At present, JSON arrays don't work as a result of a bug. È in corso una correzione.A fix is in progress.)
Non supportatoUnsupported
Valore JSONJSON value SupportatoSupported Non supportatoUnsupported
Tipo non JSONNon-JSON type Non supportatoUnsupported Non supportatoUnsupported

AutenticazioneAuthentication

NessunaNone

Se l'autenticazione non è necessaria, non includere la proprietà "authentication".If authentication is not required, do not include the "authentication" property.

BasicBasic

Specificare il nome utente e la password da usare per l'autenticazione di base.Specify user name and password to use with the basic authentication.

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

Certificato clientClient certificate

Specificare il contenuto con codifica Base64 di un file PFX e la password.Specify base64-encoded contents of a PFX file and the password.

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

Identità gestitaManaged Identity

Specificare l'URI di risorsa per cui verrà richiesto il token di accesso usando l'identità gestita per la data factory.Specify the resource uri for which the access token will be requested using the managed identity for the data factory. Per chiamare l'API di gestione delle risorse di Azure, usare https://management.azure.com/.To call the Azure Resource Management API, use https://management.azure.com/. Per altre informazioni sul funzionamento delle identità gestite, consultare la pagina di panoramica sulle identità gestite per le risorse di Azure.For more information about how managed identities works see the managed identities for Azure resources overview page.

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

Schema del payload della richiestaRequest payload schema

Quando si usa il metodo POST o PUT, la proprietà body rappresenta il payload che viene inviato all'endpoint.When you use the POST/PUT method, the body property represents the payload that is sent to the endpoint. È possibile passare i servizi collegati e i set di dati come parte del payload.You can pass linked services and datasets as part of the payload. Di seguito è riportato lo schema per il payload:Here is the schema for the payload:

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

EsempioExample

In questo esempio, l'attività Web della pipeline chiama un endpoint REST.In this example, the web activity in the pipeline calls a REST end point. Passa all'endpoint un servizio collegato SQL di Azure e un set di dati SQL di Azure.It passes an Azure SQL linked service and an Azure SQL dataset to the endpoint. L'endpoint REST usa la stringa di connessione SQL di Azure per connettersi al server SQL di Azure e restituisce il nome dell'istanza del server SQL.The REST end point uses the Azure SQL connection string to connect to the Azure SQL server and returns the name of the instance of SQL server.

Definizione della pipelinePipeline definition

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

Valori dei parametri della pipelinePipeline parameter values

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

Codice endpoint del servizio WebWeb service endpoint code


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

Passaggi successiviNext steps

Vedere altre attività del flusso di controllo supportate da Data Factory:See other control flow activities supported by Data Factory: