2016-07-23 7 views
1

J'ai programmé AWS Data Pipeline qui a échoué en cours d'exécution. J'ai corrigé le problème sans modifier le Pipeline de quelque façon que ce soit (j'ai changé un script en S3). Cependant, il ne semble pas y avoir de bon moyen de redémarrer le Pipeline depuis le début.Comment faire pour redémarrer un pipeline de données AWS

J'ai essayé de désactiver/réactiver le pipeline, mais les nœuds précédemment "FINIS" n'ont pas été redémarrés. C'est prévu selon le docs, cela ne fait que mettre en pause et annuler l'exécution du Pipeline, ce qui n'est pas ce que nous voulons.

J'ai essayé Réexécution l'un des noeuds (appeler x) individuellement, mais il ne respectait pas les dépendances: aucun des nœuds x dépend de exécutiez, ni ne les noeuds qui dépendent de x.

J'ai essayé de l'activer à un moment donné dans le passé, mais j'ai reçu l'erreur startTimestamp should be later than any Schedule StartDateTime in the pipeline (Service: DataPipeline; Status Code: 400; Error Code: InvalidRequestException; Request ID: <SANITIZED>).

Je préfèrerais ne pas changer le nœud Schedule, puisque je veux que le Pipeline continue de le respecter; J'ai seulement besoin de cette exécution manuelle. Comment puis-je redémarrer le Pipeline depuis le début, une fois?

Répondre

1

L'API ActivatePipeline possède un paramètre startTimestamp permettant de redémarrer l'exécution à partir de n'importe quel intervalle de temps précédent. S'il vous plaît voir http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_ActivatePipeline.html

+0

Cela n'a pas fonctionné pour moi. Lorsque je sélectionne Actions-> Activer, et que je sélectionne une heure précédente, j'obtiens l'erreur suivante: 'startTimestamp doit être plus tard que tout Schedule StartDateTime dans le pipeline (Service: DataPipeline; Code d'état: 400; Code d'erreur: InvalidRequestException; ID de la demande: ) '. D'un autre côté, quand je l'active "à partir de maintenant", aucune erreur ne se produit, mais le pipeline ne fonctionne pas non plus. Je vais ajouter ceci à la question. –

+0

Votre définition de pipeline a un startDateTime dans l'objet schedule qui définit la première exécution. Le paramètre startTimestamp de l'API activate ne peut pas être plus ancien que startDatetime. Dans ce cas, vous ne pouvez ré-exécuter que les dates déjà exécutées. Si vous voulez remonter dans le temps pour traiter des données pour des dates que votre pipeline n'a jamais exécutées auparavant, vous devez cloner le pipeline et en créer un nouveau malheureusement. –

1

Jusqu'à présent, la meilleure façon d'y arriver que j'ai trouvé est de cloner le pipeline, faire la demande (au lieu de Programmé) et activer que un. Ce nouveau pipeline va s'activer et fonctionner immédiatement. Cela semble lourd, cependant; Je serais heureux d'entendre un meilleur moyen.