Copier des données d’un point de terminaison HTTP à l’aide d’Azure Data Factory ou d’Azure Synapse Analytics

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 !

Cet article décrit comment utiliser l’activité de copie (Copy) dans Azure Data Factory et Azure Synapse pour copier des données depuis un point de terminaison HTTP. Il s’appuie sur l’article Activité de copie, qui présente une vue d’ensemble de cette activité.

Les différences entre ce connecteur HTTP, le connecteur REST et le connecteur Table Web sont les suivantes :

  • Le connecteur REST prend spécifiquement en charge la copie de données à partir d’API RESTful.
  • Le connecteur HTTP est générique pour récupérer des données à partir de n’importe quel point de terminaison HTTP, par exemple pour télécharger un fichier. Avant que le connecteur REST soit disponible, vous pouvez utiliser le connecteur HTTP pour copier des données à partir d’API RESTful, qui est pris en charge, mais moins fonctionnel que le connecteur REST.
  • Le connecteur Table web extrait le contenu de tables d’une page web HTML.

Fonctionnalités prises en charge

Ce connecteur HTTP est pris en charge pour les activités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/-)
Activité de recherche

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs, consultez les Magasins de données pris en charge.

Vous pouvez utiliser ce connecteur HTTP pour :

  • Récupérer des données à partir d’un point de terminaison HTTP/S à l’aide des méthodes HTTP GET ou POST.
  • Récupérer des données avec l’une des authentifications suivantes : Anonymous, Basic, Digest, Windows ou ClientCertificate.
  • Copier la réponse HTTP en l’état ou l’analyser en utilisant les formats de fichier et codecs de compression pris en charge.

Conseil

Pour tester une requête HTTP d’extraction de données avant de configurer le connecteur HTTP, obtenez des informations à partir de la spécification d’API sur les exigences d’en-tête et de corps. Vous pouvez vous servir d’outils tels que Postman ou un navigateur web pour valider.

Prérequis

Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.

Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.

Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.

Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.

Bien démarrer

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à une source HTTP à l’aide de l’interface utilisateur

Suivez les étapes suivantes pour créer un service lié à une source HTTP dans l'interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez HTTP et sélectionnez le connecteur HTTP.

    Screenshot of the HTTP connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Screenshot of configuration for an HTTP linked service.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations détaillées sur les propriétés utilisables pour définir les entités propres au connecteur HTTP.

Propriétés du service lié

Les propriétés prises en charge pour le service lié HTTP sont les suivantes :

Propriété Description Obligatoire
type La propriété type doit être définie sur HttpServer. Oui
url URL de base du serveur web. Oui
enableServerCertificateValidation Indique si la validation du certificat TLS/SSL de serveur est activée lors de la connexion à un point de terminaison HTTP. Si votre serveur HTTPS utilise un certificat auto-signé, affectez à cette propriété la valeur false. Non
(la valeur par défaut est true)
authenticationType Spécifie le type d’authentification. Les valeurs autorisées sont : Anonyme, De base, Digest, Windows et ClientCertificate. Vous pouvez également configurer des en-têtes d’authentification dans la propriété authHeader. Consultez les sections à la suite de ce tableau pour accéder à d’autres propriétés et à des exemples JSON relatifs à ces types d’authentification. Oui
authHeaders En-têtes de requête HTTP supplémentaires pour l’authentification.
Par exemple, pour utiliser l’authentification par clé API, vous pouvez sélectionner le type d’authentification « anonyme » et spécifier la clé API dans l’en-tête.
Non
connectVia Runtime d’intégration à utiliser pour la connexion au magasin de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, l’Azure Integration Runtime par défaut est utilisé. Non

Utilisation de l’authentification Basic (De base), Digest ou Windows

Définissez la valeur de la propriété authenticationType sur De base, Digest ou Windows. Outre les propriétés génériques décrites dans la section précédente, spécifiez les propriétés suivantes :

Propriété Description Obligatoire
userName Nom d’utilisateur à utiliser pour accéder au point de terminaison HTTP. Oui
mot de passe Mot de passe de l’utilisateur (valeur userName). Vous pouvez marquer ce champ en tant que type SecureString pour le stocker de manière sécurisée. Vous pouvez également référencer un secret stocké dans Azure Key Vault. Oui

Exemple

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "Basic",
            "url" : "<HTTP endpoint>",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Utilisation de l’authentification ClientCertificate (Certificat client)

Pour utiliser l’authentification ClientCertificate, définissez la valeur de la propriété authenticationType sur ClientCertificate. Outre les propriétés génériques décrites dans la section précédente, spécifiez les propriétés suivantes :

Propriété Description Obligatoire
embeddedCertData Données du certificat encodé en Base64. Spécifiez embeddedCertData ou certThumbprint.
certThumbprint Empreinte numérique du certificat installé dans le magasin de certificats de votre ordinateur exécutant le runtime d’intégration auto-hébergé. S’applique uniquement quand le type auto-hébergé du runtime d’intégration est spécifié dans la propriété connectVia. Spécifiez embeddedCertData ou certThumbprint.
mot de passe Mot de passe associé au certificat. Vous pouvez marquer ce champ en tant que type SecureString pour le stocker de manière sécurisée. Vous pouvez également référencer un secret stocké dans Azure Key Vault. Non

Si vous utilisez certThumbprint pour l’authentification et que le certificat est installé dans le magasin personnel de l’ordinateur local, accordez des autorisations de lecture au runtime d’intégration auto-hébergé :

  1. Ouvrez MMC (Microsoft Management Console). Ajoutez le composant logiciel enfichable Certificats ciblant Ordinateur local.
  2. Développez Certificats>Personnel, puis sélectionnez Certificats.
  3. Cliquez avec le bouton droit sur le certificat du magasin personnel, puis sélectionnez Toutes les tâches>Gérer les clés privées.
  4. Sous l’onglet Sécurité, ajoutez le compte d’utilisateur sous lequel le service hôte du runtime d’intégration (DIAHostService) s’exécute avec l’accès en lecture au certificat.
  5. Le connecteur HTTP charge uniquement les certificats approuvés. Si vous utilisez un certificat auto-signé ou non intégré émis par une autorité de certification, pour établir la liaison de confiance, le certificat doit également être installé dans l’un des magasins suivants :
    • Personnes autorisées
    • Autorités de certification racine tierce partie
    • Autorités de certification racine de confiance

Exemple 1 : utilisation de certThumbprint

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "certThumbprint": "<thumbprint of certificate>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple 2 : utilisation d’embeddedCertData

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "embeddedCertData": "<Base64-encoded cert data>",
            "password": {
                "type": "SecureString",
                "value": "password of cert"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Utilisation d’en-têtes d’authentification

En outre, vous pouvez configurer des en-têtes de demande pour l’authentification en plus des types d’authentification intégrés.

Exemple : Utilisation de l’authentification par clé API

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "url": "<HTTP endpoint>",
            "authenticationType": "Anonymous",
            "authHeader": {
                "x-api-key": {
                    "type": "SecureString",
                    "value": "<API key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Jeux de données.

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour HTTP sous les paramètres location dans le jeu de données basé sur le format :

Propriété Description Obligatoire
type La propriété de type sous location dans le jeu de données doit être définie sur HttpServerLocation. Oui
relativeUrl URL relative de la ressource qui contient les données. Le connecteur HTTP copie les données à partir de l’URL combinée : [URL specified in linked service][relative URL specified in dataset]. Non

Notes

La taille de charge utile de requête HTTP prise en charge est d’environ 500 Ko. Si la taille de charge utile que vous souhaitez passer au point de terminaison web est supérieure à 500 Ko, envisagez de la traiter en blocs plus petits.

Exemple :

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HttpServerLocation",
                "relativeUrl": "<relative url>"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Propriétés de l’activité de copie

Cette section contient la liste des propriétés prises en charge par la source HTTP.

Pour obtenir la liste complète des sections et des propriétés permettant de définir des activités, consultez Pipelines.

HTTP en tant que source

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour HTTP sous les paramètres storeSettings dans la source de la copie basée sur le format :

Propriété Description Obligatoire
type La propriété type sous storeSettings doit être définie sur HttpReadSettings. Oui
requestMethod Méthode HTTP.
Les valeurs autorisées sont Get (par défaut) et Post.
Non
additionalHeaders En-têtes de requête HTTP supplémentaires. Non
requestBody Corps de la requête HTTP. Non
httpRequestTimeout Délai d’expiration (valeur TimeSpan) pour l’obtention d’une réponse par la requête HTTP. Cette valeur correspond au délai d’expiration pour l’obtention d’une réponse, et non au délai d’expiration pour la lecture des données de la réponse. La valeur par défaut est 00:01:40. Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non

Exemple :

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HttpReadSettings",
                    "requestMethod": "Post",
                    "additionalHeaders": "<header key: header value>\n<header key: header value>\n",
                    "requestBody": "<body for POST HTTP request>"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

Modèles hérités

Notes

Les Modèles suivants sont toujours pris en charge tels quels à des fins de compatibilité descendante. Il est recommandé d’utiliser le nouveau modèle mentionné dans les sections ci-dessus à partir de maintenant. L’interface utilisateur de création peut désormais générer ce nouveau modèle.

Modèle de jeu de données hérité

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur HttpFile. Oui
relativeUrl URL relative de la ressource qui contient les données. Quand cette propriété n’est pas spécifiée, seule l’URL indiquée dans la définition du service lié est utilisée. Non
requestMethod Méthode HTTP. Les valeurs autorisées sont Get (par défaut) et Post. Non
additionalHeaders En-têtes de requête HTTP supplémentaires. Non
requestBody Corps de la requête HTTP. Non
format Si vous souhaitez récupérer des données du point de terminaison HTTP en l’état sans les analyser, puis les copier dans un magasin basé sur un fichier, ignorez la section format dans les définitions de jeu de données d’entrée et de sortie.

Si vous souhaitez analyser le contenu de la réponse HTTP pendant la copie, les types de formats de fichiers suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat. Sous format, définissez la propriété type sur l’une de ces valeurs. Pour plus d’informations, consultez Format JSON, Format Texte, Format Avro, Format Orc et Format Parquet.
Non
compression Spécifiez le type et le niveau de compression pour les données. Pour plus d’informations, voir Formats de fichier et de codecs de compression pris en charge.

Types pris en charge : GZip, Deflate, BZip2 et ZipDeflate.
Niveaux pris en charge : Optimal et Fastest.
Non

Notes

La taille de charge utile de requête HTTP prise en charge est d’environ 500 Ko. Si la taille de charge utile que vous souhaitez passer au point de terminaison web est supérieure à 500 Ko, envisagez de la traiter en blocs plus petits.

Exemple 1 : utilisation de la méthode Get (par défaut)

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
        }
    }
}

Exemple 2 : Utilisation de la méthode Post

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "requestMethod": "Post",
            "requestBody": "<body for POST HTTP request>"
        }
    }
}

Modèle hérité de la source d’activité de copie

Propriété Description Obligatoire
type La propriété type de la source de l’activité de copie doit être définie sur HttpSource. Oui
httpRequestTimeout Délai d’expiration (valeur TimeSpan) pour l’obtention d’une réponse par la requête HTTP. Cette valeur correspond au délai d’expiration pour l’obtention d’une réponse, et non au délai d’expiration pour la lecture des données de la réponse. La valeur par défaut est 00:01:40. Non

Exemple

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<HTTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "HttpSource",
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs pour l’activité de copie, consultez Magasins de données et formats pris en charge.