Ressources du service Amazon Simple Workflow - Amazon Simple Workflow Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ressources du service Amazon Simple Workflow

Ce chapitre fournit des ressources supplémentaires et des informations de référence utiles lors du développement de flux de travail avec Amazon SWF.

Types de délai d'expiration Amazon SWF

Pour garantir que les exécutions des flux de travail s'exécutent correctement, Amazon SWF vous permet de définir différents types de délais d'expiration. Certains délais spécifient la durée totale d'exécution du flux de travail. D'autres délais définissent combien de temps les tâches d'activité peuvent prendre avant d'être affectées à un outil de traitement, ainsi que combien de temps elles peuvent prendre pour se terminer à compter de l'heure où elles sont planifiées. Tous les délais d'expiration de l'API Amazon SWF sont spécifiés en secondes. Amazon SWF prend également en charge la chaîne en NONE tant que valeur de délai d'attente, ce qui indique l'absence de délai d'expiration.

Pour les délais liés aux tâches de décision et aux tâches d'activité, Amazon SWF ajoute un événement à l'historique d'exécution du flux de travail. Les attributs de l'événement fournissent des informations sur le type de délai d'attente qui s'est produit et sur la tâche de décision ou d'activité affectée. Amazon SWF planifie également une tâche de décision. Lorsque le décideur reçoit la nouvelle tâche de décision, il voit l'événement de temporisation dans l'historique et prend l'action appropriée en l'RespondDecisionTaskCompletedappelant.

Une tâche est considérée comme ouverte depuis le moment où elle est planifiée jusqu'à ce qu'elle soit fermée. Par conséquent, une tâche est indiquée comme ouverte lorsqu'un outil de traitement s'en occupe. Une tâche est fermée lorsqu'un outil de traitement la signale comme terminée, comme annulée ou comme ayant échoué. Une tâche peut également être fermée par Amazon SWF en raison d'un délai d'attente.

Délais liés au flux de travail et aux tâches de décision

Le schéma suivant illustre comment les délais de flux de travail et de décision sont liés à la durée de vie d'un flux de travail :

Durée de vie d'un flux de travail, avec des délais

Il existe deux types de délai qui s'appliquent aux tâches du flux de travail et aux tâches de décision :

  • Du début à la fermeture du flux de travail (timeoutType: START_TO_CLOSE) : ce délai indique la durée maximale d'exécution d'un flux de travail. Il est défini comme valeur par défaut lors de l'enregistrement du flux de travail, mais peut être remplacé par une autre valeur lorsque le flux de travail est lancé. Si ce délai est dépassé, Amazon SWF ferme l'exécution du flux de travail et ajoute un événement de WorkflowExecutionTimedOuttype à l'historique d'exécution du flux de travail. Outre timeoutType, les attributs de l'événement spécifient la stratégie childPolicy qui est en vigueur pour cette exécution de flux de travail. La stratégie enfant définit comment les exécutions de flux de travail enfant sont gérées si l'exécution de flux de travail parent expire ou si elle est arrêtée. Par exemple, si la stratégie childPolicy est définie sur TERMINATE, les exécutions de flux de travail enfant sont arrêtées. Une fois qu'une exécution de flux de travail expire, vous ne pouvez plus effectuer que les appels de visibilité.

  • Début de la fin de la tâche de décision (timeoutType: START_TO_CLOSE) : ce délai indique le temps maximum que le décideur correspondant peut prendre pour terminer une tâche de décision. Il est défini lors de l'enregistrement du type de flux de travail. Si ce délai est dépassé, la tâche est marquée comme expirée dans l'historique d'exécution du flux de travail, et Amazon SWF ajoute un événement de DecisionTaskTimedOuttype à l'historique du flux de travail. Les attributs de l'événement comprennent les ID des événements qui correspondent au moment où cette tâche de décision (scheduledEventId) a été planifiée et au moment où elle a été lancée (startedEventId). Outre l'ajout de l'événement, Amazon SWF planifie également une nouvelle tâche de décision pour avertir le décideur que le délai imparti pour cette tâche de décision a expiré. Après expiration de ce délai, toute tentative de finalisation de la décision avec RespondDecisionTaskCompleted échoue.

Délais des tâches d'activité

Le schéma suivant illustre le lien entre les délais d'attente et la durée de vie d'une tâche d'activité :

Durée de vie d'une tâche, avec des délais

Quatre types de délai s'appliquent aux tâches d'activité :

  • Début à fin de la tâche d'activité (timeoutType: START_TO_CLOSE) : ce délai indique le temps maximum qu'un intervenant actif peut mettre pour traiter une tâche une fois qu'il l'a reçue. Les tentatives de clôture d'une tâche d'activité dont le délai imparti a expiré à l'aide de RespondActivityTaskCanceledRespondActivityTaskCompleted, et RespondActivityTaskFailedéchoueront.

  • Activity Task Heartbeat (timeoutType: HEARTBEAT) : ce délai indique la durée maximale pendant laquelle une tâche peut être exécutée avant de fournir sa progression au cours de l'RecordActivityTaskHeartbeataction.

  • Planification des tâches d'activité jusqu'au début (timeoutType: SCHEDULE_TO_START) : ce délai indique la durée pendant laquelle Amazon SWF attend avant de mettre fin à la tâche d'activité si aucun collaborateur n'est disponible pour effectuer la tâche. Lorsque la tâche arrive à expiration, elle n'est pas attribuée à un autre outil de traitement.

  • Calendrier de clôture des tâches d'activité (timeoutType: SCHEDULE_TO_CLOSE) : ce délai indique le temps que la tâche peut prendre entre le moment où elle est planifiée et le moment où elle est terminée. Il est recommandé que cette valeur ne soit pas supérieure à la somme du délai d'expiration de la tâche et du schedule-to-start délai d'expiration de la tâche start-to-close .

Note

Chacun des types de délai a une valeur par défaut, généralement définie sur NONE (infini). Toutefois, la durée maximale de toute exécution d'activité est limitée à un an.

Vous définissez ces valeurs par défaut lors de l'enregistrement du type d'activité, mais vous pouvez les remplacer par d'autres valeurs lorsque vous planifiez la tâche d'activité. Lorsque l'un de ces délais se produit, Amazon SWF ajoute un événement de ActivityTaskTimedOuttype à l'historique du flux de travail. La valeur d'attribut timeoutType de cet événement indique quel délai a expiré. Pour chaque délai, la valeur timeoutType est indiquée entre parenthèses. Les attributs de l'événement comprennent également les ID des événements qui correspondent au moment où la tâche d'activité (scheduledEventId) a été planifiée et au moment où elle a été lancée (startedEventId). Outre l'ajout de l'événement, Amazon SWF planifie également une nouvelle tâche de décision pour avertir le décideur que le délai imparti s'est écoulé.

Points de terminaison Amazon Simple Workflow Service

Une liste des régions et points de terminaison Amazon SWF actuels est fournie dans le Référence générale d'Amazon Web Services, ainsi que les points de terminaison des autres services.

Les domaines Amazon SWF et tous les flux de travail et activités associés doivent exister au sein de la même région pour communiquer entre eux. En outre, les domaines enregistrés, les flux de travail et les activités d'une région n'existent pas dans les autres régions. Par exemple, si vous créez un domaine nommé « MySample Domain » à la fois dans us-east-1 et dans us-west-2, ils existent en tant que domaines distincts : aucun des flux de travail, listes de tâches, activités ou données associés à vos domaines n'est partagé entre les régions.

Si vous utilisez d'autres AWS ressources dans vos flux de travail, telles que des instances Amazon EC2, celles-ci doivent également exister dans la même région que vos ressources Amazon SWF. Les seules exceptions à cette règle concernent les services couvrant plusieurs régions, tels qu'Amazon S3 et IAM. Vous pouvez accéder à ces services à partir des flux de travail, indépendamment de la région qui les prend en charge.

Documentation supplémentaire pour le service Amazon Simple Workflow

En plus de ce guide du développeur, la documentation suivante peut également vous être utile.

Référence de l'API Amazon Simple Workflow Service

La référence d'API Amazon Simple Workflow Service fournit des informations détaillées sur l'API HTTP Amazon SWF, notamment les actions, les structures de demande et de réponse et les codes d'erreur.

AWS Flow Framework Documentation

AWS Flow FrameworkIl s'agit d'un framework de programmation qui simplifie le processus de mise en œuvre d'applications asynchrones distribuées qui utilisent Amazon SWF pour gérer leurs flux de travail et leurs activités, afin que vous puissiez vous concentrer sur la mise en œuvre de votre logique de flux de travail.

Chacun AWS Flow Framework est conçu pour fonctionner de manière idiomatique dans la langue pour laquelle il a été conçu, afin que vous puissiez travailler naturellement avec la langue de votre choix afin de mettre en œuvre des flux de travail avec tous les avantages d'Amazon SWF.

Il existe un framework AWS Flow pour Java. Le guide du développeur AWS Flow Framework pour Java fournit des informations sur la façon d'obtenir, de configurer et d'utiliser le AWS Flow Framework pour Java.

AWS Documentation du SDK

Les kits de développement AWS logiciel (SDK) permettent d'accéder à Amazon SWF dans de nombreux langages de programmation. Les SDK suivent de près l'API HTTP, mais fournissent également des interfaces de programmation spécifiques au langage pour certaines fonctionnalités d'Amazon SWF. Pour plus d'informations sur chaque kit SDK, cliquez sur les liens ci-dessous.

Note

Seuls les SDK compatibles avec Amazon SWF au moment de la rédaction sont répertoriés ici. Pour obtenir la liste complète des AWS SDK disponibles, rendez-vous sur la page Outils pour Amazon Web Services.

Java

AWS SDK for Java fournit une API Java pour les services AWS d'infrastructure.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for Java. Vous pouvez également accéder directement aux sections Amazon SWF de la référence du SDK en suivant ces liens :

JavaScript

AWS SDK for JavaScript Cela permet aux développeurs de créer des bibliothèques ou des applications qui utilisent des AWS services à l'aide d'une easy-to-use API simple disponible à la fois dans le navigateur ou dans les applications Node.js sur le serveur.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for JavaScript. Vous pouvez également accéder directement à la section Amazon SWF dans la référence du SDK en suivant ce lien :

.NET

AWS SDK for .NET Il s'agit d'un package unique téléchargeable qui inclut des modèles de projet Visual Studio, la bibliothèque AWS .NET, des exemples de code C# et de la documentation. AWS SDK for .NET Cela permet aux développeurs Windows de créer plus facilement des applications .NET pour Amazon SWF et d'autres services.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for .NET. Vous pouvez également accéder directement aux sections Amazon SWF de la référence du SDK en suivant ces liens :

PHP

AWS SDK for PHP fournit une interface de programmation PHP à Amazon SWF.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for PHP. Vous pouvez également accéder directement à la section Amazon SWF dans la référence du SDK en suivant ce lien :

Python

AWS SDK for Python (Boto) fournit une interface de programmation Python à Amazon SWF.

Pour consulter la documentation disponible, consultez la page boto : A Python interface to Amazon Web Services. Vous pouvez également accéder directement aux sections Amazon SWF de la documentation en suivant ces liens :

Ruby

AWS SDK for Ruby fournit une interface de programmation Ruby à Amazon SWF.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for Ruby. Vous pouvez également accéder directement à la section Amazon SWF dans la référence du SDK en suivant ce lien :

AWS CLI Documentation

Le AWS Command Line Interface (AWS CLI) est un outil unifié permettant de gérer vos AWS services. Avec un seul outil à télécharger et à configurer, vous pouvez contrôler plusieurs AWS services depuis la ligne de commande et les automatiser par le biais de scripts.

Pour plus d'informations à ce sujet AWS CLI, consultez la AWS Command Line Interfacepage.

Pour un aperçu des commandes disponibles pour Amazon SWF, consultez swf dans le manuel Command Reference.AWS CLI

Ressources Web pour le service Amazon Simple Workflow

Il existe un certain nombre de ressources Web que vous pouvez utiliser pour en savoir plus sur Amazon SWF ou pour obtenir de l'aide concernant l'utilisation du service et le développement de flux de travail.

Forum Amazon SWF

Le forum Amazon SWF vous permet de communiquer avec d'autres développeurs Amazon SWF et les membres de l'équipe de développement Amazon SWF d'Amazon pour poser des questions et obtenir des réponses.

Vous pouvez consulter le forum à l'adresse suivante : Forum : Amazon Simple Workflow Service.

FAQ sur Amazon SWF

La FAQ Amazon SWF fournit des réponses aux questions fréquemment posées sur Amazon SWF, notamment un aperçu des cas d'utilisation courants, des différences entre Amazon SWF et d'autres services, et bien plus encore.

Vous pouvez accéder à la FAQ ici : FAQ Amazon SWF.

Vidéos Amazon SWF

La chaîne Amazon Web Services YouTube propose une formation vidéo pour tous les services Web d'Amazon, y compris Amazon SWF. Pour obtenir la liste complète des vidéos liées à Amazon SWF, utilisez la requête suivante : Simple Workflow in Amazon Web Services

Options de migration pour Ruby Flow

Le AWS Flow Framework for Ruby n'est plus en cours de développement actif. Le code existant continuera de fonctionner indéfiniment, mais il n'y aura aucune nouvelle fonction ni version. Cette rubrique traite des options d'utilisation et de migration permettant de continuer à travailler avec Amazon SWF, ainsi que des informations sur la façon de migrer vers Step Functions.

Option Description

Continuez à utiliser le framework Ruby Flow

Pour l'instant, le Ruby Flow Framework continuera de fonctionner. Si vous ne faites rien, votre code continuera de fonctionner de la même manière. Prévoyez de migrer hors de AWS Flow Framework for Ruby dans un futur proche.

Migrer vers le framework Java Flow

Le Java Flow Framework est toujours en cours de développement et continuera de recevoir de nouvelles fonctionnalités et mises à jour.

Migrer vers Step Functions

Step Functions permet de coordonner les composants des applications distribuées à l'aide de flux de travail visuels contrôlés par une machine à états.

Utilisez l'API SWF directement, sans le Flow Framework Vous pouvez continuer à travailler dans Ruby et à utiliser l'API SWF directement, au lieu d'AWS Flow Framework pour Ruby.

L'avantage du Flow Framework, que ce soit pour Ruby ou Java, est qu'il vous permet de vous concentrer sur la logique de votre flux de travail. L'infrastructure gère la plupart des informations de communication et de coordination, et la complexité est abstraite. Vous pouvez continuer à avoir le même niveau d'abstraction en migrant vers le Java Flow Framework, ou vous pouvez interagir directement avec le SDK Amazon SWF.

Continuer à utiliser Flow Framework pour Ruby

Le AWS Flow Framework for Ruby continuera à fonctionner comme il le fait actuellement à court terme. Si vous avez écrit des flux de travail dans AWS Flow Framework for Ruby, ils continueront de fonctionner. Sans mises à jour, support ou correctifs de sécurité, il est préférable d'avoir un plan ferme AWS Flow Framework pour migrer hors de Ruby dans un futur proche.

Migrer vers Flow Framework pour Java

Le AWS Flow Framework pour Java restera en développement actif. Sur le AWS Flow Framework plan conceptuel, Java est similaire à AWS Flow Framework Ruby : vous pouvez toujours vous concentrer sur la logique de votre flux de travail, et le framework vous aidera à gérer la logique de votre décideur et facilitera la gestion d'autres aspects d'Amazon SWF.

Migrer vers Step Functions

AWS Step Functions fournit un service similaire à Amazon SWF, mais dans lequel la logique de votre flux de travail est contrôlée par une machine à états. Step Functions vous permet de coordonner les composants des applications distribuées et des microservices à l'aide de flux de travail visuels. Vous développez les applications à partir de composants individuels qui exécutent chacun une fonction discrète, ou tâche, vous permettant de mettre à l'échelle et de modifier les applications rapidement. Step Functions fournit un moyen fiable de coordonner les composants et de parcourir les fonctions de votre application. Une console graphique permet de visualiser les composants de votre application en une série d'étapes. Il déclenche et suit automatiquement chaque étape, et réessaie en cas d'erreur, afin que votre application s'exécute dans l'ordre et comme prévu, à chaque fois. Step Functions enregistre l'état de chaque étape. Ainsi, en cas de problème, vous pouvez diagnostiquer et corriger rapidement les problèmes.

Dans Step Functions, vous gérez la coordination de vos tâches à l'aide d'une machine à états, écrite en JSON déclaratif, définie à l'aide du langage Amazon States. En utilisant une machine à états, vous n'avez pas besoin d'écrire et de gérer un programme de décision pour contrôler la logique de votre application. Step Functions propose une approche intuitive, productive et agile pour coordonner les composants de l'application à l'aide de flux de travail visuels. Vous devriez envisager de l'utiliser AWS Step Functions pour toutes vos nouvelles applications, et Step Functions fournit une excellente plateforme de migration pour les flux de travail que vous avez actuellement implémentés AWS Flow Framework dans Ruby.

Pour vous aider à migrer vos tâches vers Step Functions, tout en continuant à tirer parti de vos compétences en langage Ruby, Step Functions fournit un exemple de gestionnaire d'activité Ruby. Cet exemple utilise les meilleures pratiques pour implémenter un travailleur d'activité et peut être utilisé comme modèle pour migrer votre logique de tâches vers Step Functions. Pour plus d'informations, consultez la rubrique Example Activity Worker in Ruby du Guide du AWS Step Functions développeur.

Note

Pour de nombreux clients, migrer vers Step Functions depuis AWS Flow Framework for Ruby est la meilleure option. Toutefois, si vous souhaitez que des signaux interviennent dans vos processus, ou si vous devez lancer des processus enfants renvoyant un résultat à un parent, pensez à utiliser directement l'API Amazon SWF ou à migrer vers l' AWS Flow Framework API pour Java.

Pour plus d'informations sur AWS Step Functions, voir :

Utilisez directement l'API Amazon SWF

Bien que AWS Flow Framework for Ruby gère une partie de la complexité d'Amazon SWF, vous pouvez également utiliser directement l'API Amazon SWF. Cela vous permet de créer des flux de travail la où vous contrôlez intégralement l'implémentation et la coordination des tâches, sans vous soucier des complexités sous-jacentes telles que le suivi de leur progression ou la tenue à jour de leur état.