Activité Webhook dans Azure Data Factory

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Une activité de webhook peut contrôler l’exécution des pipelines dans votre code personnalisé. Grâce à l’activité de webhook, le code des clients peut appeler un point de terminaison et lui transmettre une URL de rappel. L’exécution du pipeline attend l’appel du rappel avant de passer à l’activité suivante.

Important

L’activité WebHook vous permet désormais de retracer l’état d’erreur et les messages personnalisés à l’activité et au pipeline. Affectez à reportStatusOnCallBack la valeur true et incluez StatusCode et Error dans la charge utile de rappel. Pour plus d’informations, consultez la section Remarques supplémentaires.

Créer une activité Webhook avec l’interface utilisateur

Pour utiliser une activité Webhook dans un pipeline, effectuez les étapes suivantes :

  1. Recherchez Webhook dans le volet Activités de pipeline, puis faites glisser une activité Webhook vers le canevas du pipeline.

  2. Sélectionnez la nouvelle activité webhook sur le canevas si elle ne l’est pas déjà, et son onglet Paramètres pour en modifier les détails.

    Shows the UI for a Webhook activity.

  3. Spécifiez une URL pour le webhook, qui peut être une chaîne d’URL littérale ou toute combinaison d’expressions dynamiques, de fonctions, de variables système ou de sorties d’autres activités. Fournissez d’autres détails à soumettre avec la demande.

  4. Utilisez la sortie de l’activité comme entrée pour toute autre activité, et référencez la sortie le contenu dynamique n’est pris en charge dans l’activité de destination.

Syntaxe


{
    "name": "MyWebHookActivity",
    "type": "WebHook",
    "typeProperties": {
        "method": "POST",
        "url": "<URLEndpoint>",
        "headers": {
            "Content-Type": "application/json"
        },
        "body": {
            "key": "value"
        },
        "timeout": "00:10:00",
        "reportStatusOnCallBack": false,
        "authentication": {
            "type": "ClientCertificate",
            "pfx": "****",
            "password": "****"
        }
    }
}

Propriétés type

Propriété Description Valeurs autorisées Obligatoire
name Nom de l’activité de webhook. String Oui
type Doit avoir la valeur « WebHook ». String Oui
method Méthode d’API REST pour le point de terminaison cible. Chaîne. Le type pris en charge est « POST ». Oui
url Point de terminaison cible et chemin d’accès. Chaîne ou expression avec la valeur resultType d’une chaîne. Oui
headers En-têtes envoyés à la demande. Voici un exemple qui définit la langue et le type d’une demande : "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Chaîne ou expression avec la valeur resultType d’une chaîne. Oui. Un en-tête Content-Type comme "headers":{ "Content-Type":"application/json"} est requis.
body Représente la charge utile envoyée au point de terminaison. Code JSON valide ou expression avec la valeur resultType du code JSON. Consultez Schéma de charge utile de demande pour obtenir le schéma de la charge utile de demande. Oui
authentification Méthode d’authentification utilisée pour appeler le point de terminaison. Les types pris en charge sont « Basic » et « ClientCertificate ». Pour en savoir plus, consultez Authentification. Si l’authentification n’est pas obligatoire, excluez cette propriété. Chaîne ou expression avec la valeur resultType d’une chaîne. Non
timeout Durée pendant laquelle l’activité attend que le rappel spécifié par callBackUri soit appelé. La valeur par défaut est 10 minutes (« 00:10:00 »). Les valeurs ont le format TimeSpan j.hh:mm:ss. String Non
Signaler l’état lors du rappel Permet à un utilisateur de signaler l’état d’échec d’une activité de webhook. Boolean Non

Authentification

Une activité de webhook prend en charge les types d’authentification suivants.

None

Si l’authentification n’est pas requise, n’incluez pas la propriété authentication.

De base

Spécifiez le nom d’utilisateur et le mot de passe à utiliser avec l’authentification de base.

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

Certificat client

Spécifiez le contenu encodé en Base64 d’un fichier PFX et un mot de passe.

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

Identité managée

Utilisez l’identité managée pour votre fabrique de données ou votre espace de travail Synapse pour spécifier l’URI de la ressource pour laquelle le jeton d’accès est requis. Pour appeler l’API Gestion des ressources Azure, utilisez https://management.azure.com/. Pour plus d’informations sur le fonctionnement des identités managées, consultez la vue d’ensemble des identités managées pour les ressources Azure.

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

Notes

Si le service est configuré avec un dépôt Git, vous devez stocker vos informations d’identification dans Azure Key Vault pour utiliser l’authentification de base ou de certificat client. Le service ne stocke pas les mots de passe dans Git.

Remarques supplémentaires

Le service transmet la propriété supplémentaire callBackUri dans le corps envoyé au point de terminaison de l’URL. Le service s’attend à ce que cet URI soit appelé avant la valeur de délai d’attente spécifiée. Si l’URI n’est pas appelé, l’activité échoue avec l’état « TimedOut ».

L’activité de webhook échoue quand l’appel au point de terminaison personnalisé échoue. Tout message d’erreur peut être ajouté au corps du rappel et utilisé dans une activité ultérieure.

Pour chaque appel d’API REST, le client expire si le point de terminaison ne répond pas dans un délai d’une minute. Ce comportement est une bonne pratique standard pour le protocole HTTP. Pour résoudre ce problème, implémentez un modèle 202. Dans le cas actuel, le point de terminaison retourne 202 (accepté) et le client interroge.

Le délai d’expiration d’une minute de la demande n’a rien à voir avec le délai d’expiration de l’activité. Ce dernier est utilisé pour attendre le rappel spécifié par callbackUri.

Le corps retransmis à l’URI de rappel doit être du code JSON valide. Attribuez à l’en-tête Content-Type la valeur application/json.

Si vous utilisez la propriété Signaler l’état lors du rappel, vous devez ajouter le code suivant au corps quand vous effectuez le rappel :

{
    "Output": {
        // output object is used in activity output
        "testProp": "testPropValue"
    },
    "Error": {
        // Optional, set it when you want to fail the activity
        "ErrorCode": "testErrorCode",
        "Message": "error message to show in activity error"
    },
    "StatusCode": "403" // when status code is >=400, activity is marked as failed
}

Consultez ces activités de flux de contrôle prises en charge :