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 utiliser des outils tels que Visual Studio, Invoke-RestMethod de PowerShell 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 :
- L’outil Copier des données
- Le portail Azure
- Le kit SDK .NET
- Le kit SDK Python
- Azure PowerShell
- L’API REST
- Le modèle Azure Resource Manager
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.
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 :
Recherchez HTTP et sélectionnez le connecteur HTTP.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
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é :
- Ouvrez MMC (Microsoft Management Console). Ajoutez le composant logiciel enfichable Certificats ciblant Ordinateur local.
- Développez Certificats>Personnel, puis sélectionnez Certificats.
- 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.
- 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.
- 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.
- Format Avro
- Format binaire
- Format de texte délimité
- Format Excel
- Format JSON
- Format ORC
- Format Parquet
- Format XML
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.
- Format Avro
- Format binaire
- Format de texte délimité
- Format Excel
- Format JSON
- Format ORC
- Format Parquet
- Format XML
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>"
}
}
}
]
Contenu connexe
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.