Talend & Amazon S3 : Les contours de l’intégration (2ème partie)

Chers lecteurs, si vous n’avez pas encore eu l’occasion de lire l’article « Talend & Amazon S3 : Les contours de l’intégration (1ère partie) », je vous encourage à en prendre connaissance avant de continuer car ce billet de blog en est la continuité.

Ainsi dans cet article, nous allons continuer de voir les capacités d’intégration de Talend avec le service de stockage AWS S3, afin de souligner les bénéfices que vous pouvez tirer d’une telle intégration.

 

Gestion des connexions

Il est connu que la création d’une connexion vers un système distant est une opération plutôt gourmande en ressources. D’ailleurs, une fois que la connexion est créée, la bonne pratique est de tout faire pour la réutiliser.

Talend favorise cette bonne pratique avec le connecteur tS3Connection :

-          Utilisez le connecteur tS3Connection pour établir la connexion vers AMAZON S3 en début de job,

-          Réutilisez là ensuite pour toutes vos lectures/écritures dans l’ensemble du Job,

-          Et enfin clôturez là avec le connecteur tS3Close.

Ci-dessous un exemple de job Talend qui illustre l’utilisation de ces connecteurs :

 

Gestion de l’authentification et de l’autorisation : clés d’accès et rôles IAM

Tous les connecteurs S3 de Talend supportent les capacités suivantes :

-          L’authentification par clé d’accès,

-          L’utilisation de rôle AWS lorsque le job Talend s’exécute sur une instance Amazon EC2 à laquelle un rôle est associé,

-          L’obtention de rôle et d’identifiants temporaires via le serveur de jetons AWS Security Token Service tel que décrit dans la documentation d’AWS http://docs.aws.amazon.com/fr_fr/STS/latest/APIReference/API_AssumeRole.html.

Il est important de s’assurer au préalable que les permissions et/ou rôles spécifiés disposent de privilèges suffisants d’accès, de lecture ou d’écriture d’objets et de buckets S3 selon les cas d’utilisation. Cela passe par une bonne connaissance du service AWS Identity and Access Management, et des mécanismes de contrôles d’accès dans S3 basés sur les « buckets policy » et les « ACL ».

Gestion de la confidentialité : chiffrage côté client et côté serveur.

La question de la confidentialité et de la sécurité des données a longtemps été un frein à l’adoption du Cloud pour bon nombre d’entreprises. Pourtant, les clouds publics tels qu’Amazon Web Services implémentent pléthore de mécanismes de protection contre le vol de données, de chiffrement et d’infrastructures de gestion de clés. Ils justifient également d’une longue liste de certifications de sécurité. Concernant Amazon, vous pouvez retrouver ici https://aws.amazon.com/fr/compliance/ la liste des certifications parmi lesquelles on retrouve SOC1, SOC2, PCI-DSS, CJIS, C5, Cyber Essentials Plus….

C’est dire que la sécurité est un sujet primordial et pris très au sérieux lorsqu’il s’agit d’héberger les applications et les données dans le cloud.

Prenons un instant pour rappeler comment AWS définit le modèle de sécurité partagée entre AWS et ses clients :

-          AWS se charge de toute la sécurité du cloud : sécurité des accès et infrastructure physiques, sécurité et maintenance des services entièrement gérés, sécurité de l’infrastructure globale etc.,

-          Le client est chargé de la sécurité dans le cloud : sécurité et chiffrement de ses données, gestion des groupes de sécurité et NACL, configuration des accès et des identités IAM, mise à jour des patchs applicatifs etc.

Le tableau ci-dessous décrit les périmètres de responsabilités de chacune des parties :

 

Figure 1- Modèle de responsabilité partagée AWS - https://aws.amazon.com/fr/compliance/shared-responsibility-model/

Ainsi, Vous Client, avez la responsabilité de chiffrer vos propres données et êtes fortement encouragé à le faire en utilisant les mécanismes suivants à votre disposition :

-          Chiffrement des données côté client - client-side encryption: vous chiffrez les données avant de les charger vers S3,

-          Chiffrement des données côté serveur – server-side encryption : vous chargez les données dans S3 et vous laissez le soin à AWS de chiffrer vos données pour vous selon la clé et l’algorithme de chiffrement que vous lui transmettez.

La bonne nouvelle, c’est que Talend vous permet d’utiliser les mécanismes de chiffrement détaillés ci-après tout en vous épargnant toute la complexité inhérente :

-          Chiffrement côté client - « Client-Side Encryption »

o   Chiffrement avec clé KMS

o   Chiffrement avec clé fournie par le client

§  Symmetric Master Key

§  Asymmetric Master Key

-          Chiffrement côté serveur - « Server-Side Encryption »

o   SSE-S3

 

Chargement partitionné pour les gros objets

Dans les cas d’utilisation de S3 comme Data Lake par exemple (voir http://fr.slideshare.net/jmfranco/tracer-la-voie-vers-le-big-data-avec-talend-et-aws), la taille des fichiers S3 à manipuler peut rapidement devenir très conséquente et l’utilisation de l’option Multipart Upload devient de ce fait indispensable. D’ailleurs, AWS encourage l’utilisation de l’option Multipart Upload dès que la taille du fichier à charger atteint 100 Méga-octets.

L’option S3 Multipart Upload permet le chargement d’objets volumineux vers S3, jusqu’à 5Go en une seule opération PutObject. D’autres avantages sont à mettre en exergue :

-          Meilleur débit de chargement puisque le gros fichier à charger est découpé en plusieurs morceaux qui sont chargés en parallèle,

-          Reprise sur erreur rapide : si le chargement d’un morceau échoue, seul ce morceau doit être repris,

-          Possibilité d’interrompre et de reprendre le chargement et par conséquent un meilleur contrôle du processus de chargement,

-          Capacité d’initier un chargement avant même de connaitre la taille finale de l’objet à charger.

Avec Talend, l’option Multipart Upload est automatiquement mise en œuvre lorsque la taille des données à charger vers S3 dépasse la taille définie dans le champ « part size » du connecteur tS3Put.

 

Tout le mécanisme est ensuite géré de façon totalement transparente par le connecteur Talend et AWS et vous n’avez pas à vous en soucier.

Rappel de quelques bonnes pratiques

-          Privilégiez l’option Multipart Upload pour le chargement vers S3 des fichiers S3 dont la taille est supérieure ou égale à 100 méga-octets en spécifiant la taille des parties dans l’onglet « Advanced Settings » du connecteur tS3Put,

-          Utiliser l’option « Inherit role from AWS » lorsque cela est possible, en l’occurrence pour les traitements Talend s’exécutant sur des instances EC2 avec un rôle associé,

-          Privilégiez l’utilisation des variables de contextes pour les clés d’accès : puisque AWS recommande de procéder à une rotation régulière des clés d’accès, leur contextualisation facilite leur mise à jour dans tous les traitements Talend. Eviter donc l’utilisation du mode « built-in » pour ces variables,

-          Evitez d’utiliser le même préfixe pour tous vos noms d’objets s3 et préférez plutôt des préfixes aléatoires. En effet, S3 utilise un système de partitions basé sur les noms des objets. En d’autres termes, des objets qui partagent le même préfixe (Exemple : customer-1234.csv, customer-2178.csv, customer-3246.csv…) ont de grandes chances d’être stockés sur les mêmes partitions qui risquent vite d’être surchargées lorsque les transactions augmentent. Il faut donc répartir la charge en distribuant les données de façon aléatoire sur un grand nombre de partitions. Cette distribution devient même critique au-delà de 100 Transactions Par Seconde. Avec Talend, la génération de noms de clés aléatoire est très simple. Vous pouvez utiliser n’importe quelle fonction Java fournie par Talend, ou développée par vos équipes afin de générer des préfixes aléatoires : les fonctions de hachage ou les méthodes de génération aléatoire de chaines sont de bonnes candidates. Dans l’exemple ci-dessous, la fonction Talend DataMasking.createRandomString est utilisée pour générer des préfixes aléatoires,

 

-          Utilisez les connecteurs tS3Connection pour la gestion et la réutilisation des connections vers S3 dans tout votre Job Talend,

-          Enfin, optez pour la sécurité en mettant en œuvre les mécanismes de chiffrement des données en transit et au repos dans S3 avec les options de chiffrement proposées par AWS et supportées par Talend : SSE-S3, SSE-KMS, SSE-Client et CSE.

Exemple d’intégration entre Talend Data Integration, AMAZON S3 et Lambda

Un exemple d’intégration possible entre S3, Lambda et Talend Data Integration est présenté ci-dessous. L’idée de ce cas d’usage est de combiner ces 3 services afin d’avoir une architecture « event-driven » avec des traitements Talend qui sont automatiquement déclenchés à l’arrivée de fichiers dans Amazon S3.

 

Figure 2- Intégration entre Talend Data Integration, AMAZON S3 et Lambda

1.       Un fichier CSV est déposé dans un répertoire d’Amazon S3,

2.       Amazon S3 déclenche automatiquement un appel à une fonction AWS Lambda en transmettant toutes les informations sur l’évènement (nom du fichier, nom du bucket S3…),

3.       AWS Lambda invoque l’exécution d’un job Talend par un appel à l’API de Talend Administration Center. Les informations transmises sont entre autres l’identifiant du job ainsi que les informations sur l’évènement S3 d’origine,

4.       Talend Administration Center déclenche le job Talend sur un Job Server installé sur une machine AWS EC2 au sein de la même zone de disponibilité,

5.       Le Job Talend télécharge le fichier de S3, effectue le traitement, et stocke le résultat du traitement de nouveau dans S3.

Si vous souhaitez tester cette architecture, rien de plus simple : toutes les étapes de mise en œuvre sont décrites dans cet article https://help.talend.com/display/KB/AWS+-+Integrating+Talend+Data+Integration+with+S3+and+Lambda.

Conclusion

Talend propose une bonne couverture technique en termes d’intégration avec AMAZON S3. Aujourd’hui la tendance étant clairement au cloud, et fort de son partenariat avec AWS, cette couverture technique ne cesse de s’enrichir au fil des nouvelles versions Talend Data Fabric et Talend Integration Cloud. Les avantages à utiliser Talend sont principalement la simplicité, la productivité et la flexibilité qu’elle propose dans la mise en place des cas d’usages liés à S3.

Dans votre chemin vers le Cloud AWS, Talend se révèle donc être un accélérateur certain.

 

Share

Leave a comment

Ajouter un commentaire

More information?