1

J'ai une situation dans laquelle je veux exécuter un pipeline de données (DP2) après l'autre pipeline (DP1). Dans le cas où DP1 ne s'est pas terminé avec succès, je ne veux pas que DP2 soit exécuté et si c'est le cas, je veux que DP2 démarre. En fait, la situation peut devenir de plus en plus complexe à l'avenir, donc je veux avoir une option pour configurer facilement ce qui court quand et dans quel ordre. J'ai juste commencé à regarder cela et je suis tombé sur une solution qui inclurait aws lambda regardant S3 et le déclenchement de DP2 dans le cas où DP1 a produit un fichier dans S3, par exemple. C'est ok mais je préfère aller avec quelque chose de plus robuste.AWS gérer la dépendance entre les pipelines de données

Y at-il un outil qui pourrait faire ce genre de planification/commande de pipelines de données pour moi? Ce qui m'est venu à l'esprit est aussi de construire l'outil en utilisant Jenkins comme base: créer des jobs jenkins (que je peux gérer dans Jenkins) et les utiliser pour déclencher des pipelines de données à la demande en utilisant aws data pipeline api. un mécanisme pour envoyer des commandes à l'api du pipeline et vérifier l'état des pipelines de temps en temps pour voir s'ils sont en cours d'exécution, bloqués, terminés avec succès et autres ...

Cela prendrait du temps à construire, bien sûr, et c'est pourquoi je demande s'il y a déjà un outil que je peux utiliser.

Répondre

1

La méthode standard consistait à placer un fichier dans S3 à la fin de DP1, en tant que dernière activité, puis à faire en sorte que DP2 ait un paramètre Preconditon qui vérifie l'existence de ce fichier. Cela fonctionne si vos deux pipelines fonctionnent selon un calendrier fixe.

Vos pipelines fonctionnent-ils à la demande en réponse à des événements?

+0

Ces pipelines fonctionnent actuellement selon un horaire fixe, disons qu'ils commencent à 1 heure, ce qui signifie que DP1 démarre à 1 heure et que DP2 démarre à 1 heure 45 minutes, par exemple. – ezamur

+1

Dans ce cas, vous devriez être en mesure d'utiliser la solution de précondition que j'ai mentionnée. Si DP1 ne s'est pas terminé avec succès, les objets de DP2 passeront directement à l'état ÉCHEC (c'est-à-dire sans fonctionner) avec la raison de l'erreur étant "Condition préalable non satisfaite". –

2

Je sais que c'est un peu en retard, mais je viens de le trouver. Vous pouvez déclencher le pipeline n ° 2 à partir du pipeline n ° 1.

Dans le pipeline n ° 1, incluez comme dernière activité une ShellCommandActivity qui active le pipeline n ° 2 après la réussite du pipeline n ° 1. Commande à exécuter: aws datapipeline activate-pipeline --pipeline-id # {myPipelineToActivateID} où myPipelineToActivateID est l'ID de pipeline du pipeline n ° 2.

Le pipeline n ° 2 doit être créé en tant que pipeline «à la demande». Lors de sa configuration initiale, définissez la planification pour qu'elle s'exécute "sur l'activation du pipeline" plutôt que sur une planification.