2017-06-28 3 views
0

Je vais commencer directement avec ma question: Est-il possible de se connecter à un sur Prémisse Dataset dans une activité personnalisée en usine de données Azure via la passerelle de gestion des données?Activité personnalisée en usine de données, se connecter à la source de données OnPremise via une passerelle

Le usecase:

J'ai un serveur FTP local, avec plusieurs fichiers sur ce qui doit être copié dans un regulary Azure Blob Storage. La décision de télécharger les fichiers doit être basée sur un déclencheur personnalisé. Par conséquent, je crée une activité personnalisée Data Factory au lieu d'une activité de copie normale. Le serveur doit uniquement être accessible via la passerelle de gestion de données

J'ai créé un service lié typé FTPServer et un jeu de données FileShare. C'est ce que j'ai utilisé dans mon Pipeline CustomActivity en entrée.

Dans mon activité personnalisée, je souhaite maintenant me connecter à l'ensemble de données en entrée et obtenir le contenu d'un dossier à l'intérieur du serveur ftp. Et ici je ne vais pas de l'avant. Je ne sais pas comment me connecter au serveur ftp. Voici l'élément de code que je suis coincé à:

public IDictionary<string, string> Execute(IEnumerable<LinkedService> linkedServices,IEnumerable<Dataset> datasets, 
              Activity activity,IActivityLogger logger) 
{ 
    Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name); 

    FileShareDataset inputTypeProperties = inputDataset.Properties.TypeProperties as FileShareDataset; 

    FtpServerLinkedService inputLinkedService = linkedServices.First(linkedService => 
    linkedService.Name == 
    inputDataset.Properties.LinkedServiceName).Properties.TypeProperties 
    as FtpServerLinkedService; 


    ***//HERE CONNECTION TO FTPSERVER VIA GATEWAY*** 
} 

Il existe plusieurs classes passerelle dans Microsoft.Azure.Management.DataFactories.Models mais je ne peux pas trouver un moyen de travailler avec eux. Pour moi, il semble que la passerelle de gestion de données n'est peut-être pas supportée pour une activité personnalisée? Si c'est correct, y a-t-il d'autres façons d'y aller, comme créer une activité de copie dans l'activité personnalisée ou des choses comme ça? Ou est la seule solution possible une connexion directe au serveur FTP via WebRequest?

Répondre

0

Pour démarrer directement une réponse: pas :-)

Le problème que vous aurez est le contexte dans lequel le code d'activité personnalisée est exécutée. Une fois que vous avez créé votre classe pour faire un peu de travail, les DLL compilées sont placées dans le stockage blob (et zippé). Rappelez-vous que ADF n'est qu'un outil d'orchestration pour appeler d'autres services Azure, il n'a aucun de ses propres calculs. Par conséquent, il demande à Azure Batch Service de prendre les DLL du stockage BLOB et d'exécuter le code. Cela signifie que l'application s'exécute sur une ou plusieurs machines virtuelles dans le pool de calcul Batch Service. En conséquence, l'exécution est fondamentalement déconnectée du chargeur automatique de documents et n'est pas au courant de choses comme une passerelle de gestion de données (DMG). Cela dit, je comprends la confusion ici car l'activité personnalisée peut inspecter et utiliser les valeurs de la configuration des services liés ADF (votre code ci-dessus). Mais pas un DMG. Ce que vous voulez vraiment, c'est une classe d'activité personnalisée pour établir par programme une connexion VPN entre elle (la VM de service par lots) et votre réseau local, puis exécuter du code via le tunnel. Encore une fois, déconnecté de l'ADF. Bien sûr, cela ne sera jamais autorisé dans Azure. Configurer un VPN pour une machine virtuelle standard et un réseau privé virtuel est déjà assez mauvais!

Alors, que faire? Ma suggestion serait d'utiliser une activité normale de copie ADF avec le DMG pour tout d'abord débarquer dans le stockage BLOB. Appelez-le votre dossier IN. Une fois qu'il y a un deuxième pipeline ADF et utilisez l'activité personnalisée pour inspecter/trier les données. Appelez-le votre dossier CLEAN. Enfin, transmettez-le à un service en aval.

Ou, obtenez l'activité personnalisée pour accéder directement au site FTP et ne pas diluer le flux de données avec le DMG.

Espérons que cela aide.

+0

Salut merci pour votre réponse. Cela a beaucoup aidé. Malheureusement, aucune de vos solutions proposées ne sera autorisée, en raison de problèmes de sécurité informatique.Je vais maintenant gérer toute la prise de décision quels fichiers doivent être téléchargés localement, et laisser la fabrique de données simplement accéder à un dossier, dans lequel seuls les fichiers qui doivent être téléchargés sont inclus. – Torben