2016-07-15 1 views
0

I ont une configuration de pipeline dans lequel j'ai 3 étapes principales:variables de passage entre les instances EC2 en pipeline de données AWS multi-étape

1) prendre l'entrée dans un fichier compressé, décompresser le fichier dans s3. effectuer une vérification de base sur chaque fichier pour en garantir l'intégrité, passer à l'étape 2

2) lancer 2 tâches de traitement simultanées sur des instances EC2 distinctes (la parallélisation de cette étape nous fait gagner beaucoup de temps, nous en avons donc besoin pour plus d'efficacité Saké). Chaque instance EC2 exécutera des étapes de traitement de données sur certains fichiers de s3 qui ont été décompressés à l'étape 1, les fichiers requis sont différents pour chaque instance. 3) une fois les 2 processus simultanés effectués, lancer une autre instance EC2 pour effectuer le traitement final des données. Une fois cela fait, exécutez un travail de nettoyage pour supprimer les fichiers décompressés de s3, en laissant uniquement le fichier zip d'origine à sa place. Donc, l'un des problèmes que nous rencontrons est que nous avons 4 instances EC2 qui exécutent ce processus de pipeline, mais il y a quelques paramètres globaux que nous aimerions que chaque instance EC2 ait accès. Si nous utilisions une seule instance, nous pourrions bien sûr utiliser des variables shell pour accomplir cette tâche, mais nous avons vraiment besoin des instances séparées pour l'efficacité. Actuellement, notre meilleure idée est de stocker un fichier plat dans le compartiment s3 qui a accès à ces variables globales et de les lire à l'initialisation et de les réécrire si elles ont besoin de changer. C'est dégoûtant et il semble qu'il devrait y avoir un meilleur moyen, mais nous ne pouvons pas encore en trouver un. J'ai vu qu'il y avait un moyen de définir des paramètres accessibles à n'importe quelle partie du pipeline, mais il semble que vous ne pouvez le définir que par niveau de pipeline, pas sur la granularité de chaque exécution du pipeline. Est-ce que quelqu'un a des ressources qui pourraient aider ici? Très appréciée.

+0

Bump. Quelqu'un a-t-il une expérience avec ça? –

Répondre

0

Nous avons été en mesure de résoudre ce problème en utilisant DynamoDB pour garder une trace des variables/état. Le pipeline lui-même n'a aucun mécanisme pour le faire, autre que les valeurs des paramètres, qui malheureusement ne fonctionnent que par pipeline, et non par travail. Vous devez configurer une instance DynamoDB, puis utiliser l'ID du travail de pipeline pour garder trace de l'état, en vous connectant via les outils CLI ou un SDK.