Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une...

162
Amazon Simple Workflow Service Manuel du développeur Version de l'API 2012-01-25

Transcript of Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une...

Page 1: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow ServiceManuel du développeur

Version de l'API 2012-01-25

Page 2: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Amazon Simple Workflow Service: Manuel du développeurCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Table of ContentsPrésentation d’Amazon SWF ................................................................................................................ 1

Options de développement ........................................................................................................... 1Kits de développement logiciel (SDK) AWS ............................................................................ 1AWS Flow Framework ......................................................................................................... 2API du service HTTP .......................................................................................................... 2Environnements de développement ....................................................................................... 3

Introduction à Amazon SWF ................................................................................................................ 4Concepts ................................................................................................................................... 4Exécution de flux de travail .......................................................................................................... 5

Configuration ...................................................................................................................................... 7Compte AWS et clés d'accès ....................................................................................................... 7Points de terminaison .................................................................................................................. 8

Getting Started ................................................................................................................................... 9About the Workflow ................................................................................................................... 10Prerequisites ............................................................................................................................ 10Tutorial Steps ........................................................................................................................... 10Partie 1 : Utilisation de Amazon SWF avec le Kit SDK pour Ruby ..................................................... 11

Incluez le Kit SDK AWS pour Ruby ..................................................................................... 11Configuration de la session AWS ........................................................................................ 11Inscription d'un domaine Amazon SWF ................................................................................ 12Étapes suivantes .............................................................................................................. 13

Deuxième partie : mise en œuvre du flux de travail ........................................................................ 13Conception du flux de travail .............................................................................................. 13Configuration du code de flux de travail ............................................................................... 14Enregistrement du flux de travail ......................................................................................... 15Recherche de décisions ..................................................................................................... 16Lancement de l'exécution du flux de travail ........................................................................... 18Étapes suivantes .............................................................................................................. 20

Troisième partie : mise en œuvre des activités .............................................................................. 20Définition d'un type d'activité de base .................................................................................. 20Définition de GetContactActivity .......................................................................................... 22Définition de SubscribeTopicActivity ..................................................................................... 23Définition de WaitForConfirmationActivity .............................................................................. 25Définition de SendResultActivity .......................................................................................... 27Étapes suivantes .............................................................................................................. 28

Quatrième partie : mise en œuvre de l'observateur de tâches d'activité .............................................. 28Running the Workflow ............................................................................................................... 30

Where Do I Go from Here? ................................................................................................ 34Didacticiels ....................................................................................................................................... 35

Inscription d'un domaine ............................................................................................................ 35Enregistrement d'un type de flux de travail ................................................................................... 36Enregistrement d'un type d'activité ............................................................................................... 38Lancement d'une exécution de flux de travail ................................................................................ 39

Pour lancer une exécution de flux de travail à l'aide de la console ............................................ 39Affichage des tâches en attente .................................................................................................. 41Gestion des exécutions de flux de travail ..................................................................................... 41

Fonctionnement de Amazon SWF ....................................................................................................... 45Flux de travail .......................................................................................................................... 45

Qu'est-ce qu'un flux de travail ? .......................................................................................... 45Exemple de flux de travail simple : application de commerce électronique .................................. 45Exécution et enregistrement de flux de travail ....................................................................... 46Voir aussi ........................................................................................................................ 47

Historique du flux de travail ........................................................................................................ 47Acteurs .................................................................................................................................... 50

Version de l'API 2012-01-25iii

Page 4: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Qu'est-ce qu'un acteur dans Amazon SWF ? ........................................................................ 50Démarreurs de flux de travail .............................................................................................. 51Décideurs ........................................................................................................................ 51Outils de traitement d'activité .............................................................................................. 52Echange de données entre les acteurs ................................................................................ 52

Tâches .................................................................................................................................... 53Domaines ................................................................................................................................ 53Identificateurs d'objet ................................................................................................................. 54Listes de tâches ....................................................................................................................... 54

Listes de tâches de décision .............................................................................................. 55Listes de tâches d'activité .................................................................................................. 55Routage des tâches .......................................................................................................... 55

Fermeture d'une exécution de flux de travail ................................................................................. 55Cycle de vie d'une exécution de flux de travail Amazon SWF .......................................................... 56

Cycle de vie d'exécution du flux de travail ............................................................................ 56Interrogation de tâches .............................................................................................................. 60Concepts avancés ..................................................................................................................... 61

Contrôle de version ........................................................................................................... 61Signaux ........................................................................................................................... 62Flux de travail enfants ....................................................................................................... 62Marqueurs ....................................................................................................................... 63Balises ............................................................................................................................ 64Mise en œuvre d'un choix exclusif ....................................................................................... 66Temporisateurs ................................................................................................................. 68Signaux ........................................................................................................................... 69Annulation d'une tâche d'activité ......................................................................................... 70Marqueurs ....................................................................................................................... 71

Security ........................................................................................................................................... 73Protection des données ............................................................................................................. 73

Chiffrement ...................................................................................................................... 74Identity and Access Management ................................................................................................ 74

Authentication ................................................................................................................... 75Access Control ................................................................................................................. 76Basic Principles ................................................................................................................ 76Amazon SWF IAM Policies ................................................................................................. 77API Summary ................................................................................................................... 82Tag-based Policies ............................................................................................................ 87

Journalisation et surveillance dans Amazon Simple Workflow Service ............................................... 88Métriques Amazon SWF pour CloudWatch ........................................................................... 88Viewing Amazon SWF Metrics ............................................................................................ 94Logging Amazon SWF API Calls with CloudTrail .................................................................... 97

Compliance Validation .............................................................................................................. 102Resilience .............................................................................................................................. 102Infrastructure Security .............................................................................................................. 103Configuration and Vulnerability Analysis ...................................................................................... 103

Utilisation du kit AWS CLI ................................................................................................................ 104Working with APIs ........................................................................................................................... 105

Envoi de demandes d'HTTP ..................................................................................................... 105Contenu de l'en-tête HTTP ............................................................................................... 105Contenu du corps HTTP .................................................................................................. 107Exemple de requête et de réponse JSON ........................................................................... 107Calcul de la signature HMAC-SHA ..................................................................................... 108

Liste des actions Amazon SWF ................................................................................................. 110Actions liées aux activités ................................................................................................. 110Actions liées aux décideurs .............................................................................................. 110Actions liées aux exécutions de flux de travail ..................................................................... 110Actions liées à l'administration ........................................................................................... 111

Version de l'API 2012-01-25iv

Page 5: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Actions de visibilité .......................................................................................................... 111Création d'un flux de travail de base .......................................................................................... 112

Modélisation de votre flux de travail et de ses activités ......................................................... 112Inscription d'un domaine ........................................................................................................... 113

Voir aussi ....................................................................................................................... 113Setting Timeout Values ............................................................................................................ 113

Quotas on Timeout Values ............................................................................................... 114Workflow Execution and Decision Task Timeouts ................................................................. 114Activity Task Timeouts ..................................................................................................... 114See Also ........................................................................................................................ 115

Registering a Workflow Type .................................................................................................... 115See Also ........................................................................................................................ 115

Enregistrement d'un type d'activité ............................................................................................. 115Voir aussi ....................................................................................................................... 116

Tâches Lambda ...................................................................................................................... 116À propos d'AWS Lambda ................................................................................................. 116Avantages et limites inhérents à l'utilisation des tâches Lambda ............................................. 116Utilisation de tâches Lambda dans vos flux de travail ........................................................... 117

Développement d'un outil de traitement d'activité ......................................................................... 120Recherche de tâches d'activité .......................................................................................... 120Réalisation de la tâche d'activité ........................................................................................ 121Création de rapports sur les pulsations des tâches d'activité .................................................. 121Réussite ou échec d'une tâche d'activité ............................................................................. 122Lancement des outils de traitement d'activité ....................................................................... 123

Développement de décideurs .................................................................................................... 123Définition de la logique de coordination .............................................................................. 124Recherche des tâches de décision .................................................................................... 124Application de la logique de coordination ............................................................................ 126Renvoi des décisions ....................................................................................................... 126Fermeture d'une exécution de flux de travail ....................................................................... 127Lancement des décideurs ................................................................................................. 128

Lancement d'exécutions de flux de travail ................................................................................... 128Définition de la priorité des tâches ............................................................................................. 129

Définition d'une priorité de tâche pour les flux de travail ........................................................ 130Définition d'une priorité de tâche pour les activités ............................................................... 131Actions renvoyant les informations relatives aux priorités de tâche .......................................... 132

Gestion des erreurs ................................................................................................................. 132Erreurs de validation ........................................................................................................ 133Erreur lors de l'application d'actions ou de décisions ............................................................. 133Délais ............................................................................................................................ 133Erreurs déclenchées par le code utilisateur ......................................................................... 133Erreurs liées à la fermeture d'une exécution de flux de travail ................................................ 134

Quotas ........................................................................................................................................... 135General Account Quotas for Amazon SWF ................................................................................. 135Quotas on Workflow Executions ................................................................................................ 135Quotas on Task Executions ...................................................................................................... 136Amazon SWF throttling quotas .................................................................................................. 137

Throttling Quotas for Small Regions ................................................................................... 137Throttling Quotas for Medium Regions ................................................................................ 139

Throttling Quotas for Large Regions ........................................................................................... 140Requesting a Quota Increase .................................................................................................... 142

Ressources .................................................................................................................................... 143Types de délai ........................................................................................................................ 143

Délais liés au flux de travail et aux tâches de décision .......................................................... 143Délais des tâches d'activité ............................................................................................... 144

Points de terminaison .............................................................................................................. 146Documentation supplémentaire .................................................................................................. 146

Version de l'API 2012-01-25v

Page 6: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Amazon Simple Workflow Service API Reference ................................................................. 146Documentation AWS Flow Framework ................................................................................ 146Documentation des kits SDK AWS .................................................................................... 147Documentation AWS CLI .................................................................................................. 148

Ressources Web ..................................................................................................................... 148Forum Amazon SWF ....................................................................................................... 148FAQ Amazon SWF .......................................................................................................... 149Vidéos Amazon SWF ....................................................................................................... 149

Options Ruby Flow .......................................................................................................................... 150Continuer à utiliser Flow Framework pour Ruby ........................................................................... 150Migrer vers Flow Framework pour Java ...................................................................................... 150Migrer vers AWS Step Functions ............................................................................................... 151Utiliser l'API Amazon SWF directement ...................................................................................... 151

Historique du document ................................................................................................................... 152Glossaire AWS ............................................................................................................................... 155..................................................................................................................................................... clvi

Version de l'API 2012-01-25vi

Page 7: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurOptions de développement

Présentation d’Amazon SimpleWorkflow Service

Amazon Simple Workflow Service (Amazon SWF) facilite la création d'applications qui coordonnent destâches sur des composants distribués. Dans Amazon SWF, une tâche représente une unité de travaillogique réalisée par un composant de votre application. La coordination de tâches au sein de l'applicationnécessite de gérer les dépendances entre les tâches, leur planification et leur simultanéité, en respectantle flux logique de l'application. Amazon SWF permet de contrôler intégralement l'implémentation et lacoordination des tâches, sans vous soucier des complexités sous-jacentes telles que le suivi de leurprogression ou la tenue à jour de leur état.

Lorsque vous utilisez Amazon SWF, vous mettez en œuvre des instances de travail pour exécuter destâches. Ces outils de traitement peuvent être exécutés sur l'infrastructure de cloud, comme Amazon ElasticCompute Cloud (Amazon EC2), ou sur site. Vous pouvez créer des tâches qui sont de longue durée, ou quipeuvent échouer, expirer ou nécessiter un redémarrage—ou qui peuvent effectuer diverses avec le débitet la latence. Amazon SWF stocke les tâches et les affecte aux programmes exécutants une fois prêtes,assure leur suivi et conserve leur état, dont les détails sur leur réalisation. Pour coordonner des tâches,vous devez écrire un programme qui obtient le dernier état de chaque tâche à partir de Amazon SWF etl'utilise pour lancer les tâches postérieures. Amazon SWF conserve l'état d'exécution d'une applicationdurablement afin que l'application soit résistant aux pannes dans les composants individuels. Avec AmazonSWF, vous pouvez mettre en œuvre, déployer, mettre à l'échelle et modifier ces composants d'applicationde façon indépendante.

Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Ilconvient aux cas d'utilisation qui nécessitent la coordination des tâches, y compris le traitement multimédia,les systèmes back-end d'applications Web, les flux de travail des processus d'entreprise et les pipelinesanalytiques.

Options de développementPlusieurs options s'offrent à vous pour mettre en œuvre vos solutions de flux de travail avec AmazonSimple Workflow Service.

Rubriques• Kits de développement logiciel (SDK) AWS (p. 1)• AWS Flow Framework (p. 2)• API du service HTTP (p. 2)• Environnements de développement (p. 3)

Kits de développement logiciel (SDK) AWSAmazon SWF est pris en charge par les kits SDK AWS pour Java, .NET, Node.js, PHP, PHP version 2,Python et Ruby. Il offre ainsi un moyen pratique d'utiliser l'API HTTP d'Amazon SWF dans le langage deprogrammation de votre choix.

Vous pouvez développer des décideurs, des activités ou des démarreurs de flux de travail à l'aide de l'APIprésentée par ces bibliothèques. En outre, vous pouvez accéder à des opérations de visibilité via cesbibliothèques afin de développer vos propres outils Amazon SWF de surveillance et de reporting.

Version de l'API 2012-01-251

Page 8: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAWS Flow Framework

Pour télécharger l'un des kits de développement logiciel (SDK) AWS, accédez au https://aws.amazon.com/code.

Pour plus d'informations sur les méthodes Amazon SWF de chaque kit SDK, reportez-vous à ladocumentation de référence spécifique au langage du kit SDK que vous utilisez.

Voici la liste des documents disponibles concernant les kits SDK AWS.

• Manuel du développeur de Java AWS Amazon SWF• AWS SDK for Java API Reference• Kit AWS SDK pour .NET API Reference• AWS SDK for JavaScript in Node.js API Reference• AWS SDK pour PHP API Reference• AWS SDK for Python (Boto) API Reference• Kit SDK AWS pour Ruby API Reference

AWS Flow FrameworkAWS Flow Framework est un kit SDK amélioré conçu pour écrire des programmes distribués etasynchrones qui peuvent s'exécuter en tant que flux de travail sur Amazon SWF. Il est disponible pour lelangage de personnalisation Java et fournit des classes qui simplifient l’écriture de programmes distribuéscomplexes.

Avec AWS Flow Framework, vous utilisez des types préconfigurés pour mapper directement la définition devotre flux de travail avec les méthodes de votre programme.

AWS Flow Framework prend en charge les concepts standard orientés objet, telles que la gestiondes erreurs basées sur une exception, ce qui facilite la mise en œuvre de flux de travail complexes.Les programmes écrits avec le kit AWS Flow Framework peuvent être créés, exécutés et déboguésintégralement dans l'éditeur ou l'environnement de développement intégré de votre choix. Pour plusd'informations, consultez le site web AWS Flow Framework.

Voici des liens vers la documentation AWS Flow Framework :

• Manuel du développeur AWS Flow Framework pour Java• AWS Flow Framework pour Java Reference

AWS Flow Framework Exemple de codeOutre les extraits de code qui apparaissent dans la documentation AWS Flow Framework, vous pouvezobtenir des exemples de code téléchargeables complets aux emplacements suivants :

• AWS Flow Framework  : Recipes• AWS Flow Framework Échantillons pour Amazon SWF

API du service HTTPAmazon SWF fournit des opérations de service accessibles via des requêtes HTTP. Vous pouvez utiliserces opérations pour communiquer directement avec Amazon SWF et pour développer vos propresbibliothèques dans n'importe quel langage qui peut communiquer avec Amazon SWF via HTTP.

Vous pouvez développer des décideurs, des outils de traitement d'activité ou des démarreurs de flux detravail via l'API de service. Vous pouvez également accéder à des opérations de visibilité via l'API pourdévelopper vos propres outils de surveillance et de reporting.

Version de l'API 2012-01-252

Page 9: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnvironnements de développement

Pour plus d'informations sur l'utilisation de l'API, consultez Envoi de demandes HTTP à AmazonSWF (p. 105). Pour des informations détaillées sur les opérations d'API, consultez le document AmazonSimple Workflow Service API Reference.

Environnements de développementVous devez configurer un environnement de développement qui correspond au langage de programmationque vous souhaitez utiliser. Par exemple, si vous avez l'intention de développer une application pourAmazon SWF avec Java, vous devez installer un environnement de développement Java, tel quele kit AWS SDK for Java, sur chacun de vos postes de travail de développement. Si vous utilisezl'environnement de développement intégré Eclipse pour le développement Java, vous pouvez envisagerégalement l'installation d'AWS Toolkit pour Eclipse. Il s'agit d'un plug-in Eclipse qui ajoute des fonctionsutiles pour le développement AWS.

Si votre langage de programmation nécessite un environnement d'exécution, vous devez configurer cetenvironnement sur chaque ordinateur sur lequel s'exécutent ces processus.

Version de l'API 2012-01-253

Page 10: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurConcepts

Introduction à Amazon SWFUn nombre croissant d'applications reposent sur un traitement asynchrone et distribué. L'évolutivité deces applications est le motif principal d'utilisation de cette approche. Grâce à la conception de composantsdistribués autonomes, les développeurs ont la liberté de déployer et de dimensionner des parties del'application, même si la charge applicative augmente. La disponibilité des services de cloud est un autremotif d'utilisation. Alors que les développeurs d'applications commencent à tirer parti du cloud computing,ils ont besoin de combiner les ressources existantes sur site avec des ressources supplémentaires baséessur le cloud. La nature essentiellement distribuée du processus modélisé par l'application constitue uneautre raison pour laquelle l'approche distribuée asynchrone est privilégiée. Par exemple, l'automatisationd'un processus de traitement des commandes peut couvrir plusieurs systèmes et tâches humaines.

Le développement de ces applications peut être compliqué. Il implique la coordination de l'exécution deplusieurs composants distribués, ainsi que la gestion de latences accrues et le manque de fiabilité inhérentà toute communication à distance. Pour développer ces applications, vous devez généralement écrire uneinfrastructure compliquée incluant des files d'attente de messages et des bases de données, ainsi que lalogique complexe permettant de les synchroniser.

Amazon Simple Workflow Service (Amazon SWF) facilite le développement d'applications asynchroneset distribuées grâce à un modèle de programmation et à une infrastructure permettant de coordonner lescomposants distribués et de gérer leur état d'exécution de manière fiable. Avec Amazon SWF vous pouvezvous concentrer sur les aspects qui permettront de différencier votre application des autres.

Concepts fondamentaux liés aux flux de travailLes concepts de base nécessaires à la compréhension des flux de travail Amazon SWF sont présentés ci-dessous et sont expliqués plus en détail dans les sections suivantes de ce guide. La discussion suivantefournit une présentation générale de la structure et les composants d'un flux de travail.

Le concept fondamental d'Amazon SWF est le flux de travail. Un flux de travail est un ensemble d'activitésqui concourent à atteindre un objectif spécifique, avec une logique qui permet de les coordonner. Parexemple, un flux de travail peut consister à recevoir une commande client et à effectuer les actionsnécessaires pour la traiter. Chaque flux de travail s'exécute dans une ressource AWS appelée domaine,qui contrôle sa portée. Un compte AWS peut utiliser plusieurs domaines, chacun pouvant contenir plusieursflux de travail. Toutefois, les flux de travail de différents domaines ne peuvent pas interagir.

Lors de la conception d'un flux de travail Amazon SWF, vous définissez précisément chacune des activitésrequises. Ensuite, vous enregistrez chacune d'elles avec Amazon SWF en tant que type d'activité. Lorsquevous enregistrez l'activité, vous fournissez des informations comme un nom et une version, ainsi quecertaines valeurs de délai basées sur le temps que sa réalisation devrait prendre. Par exemple, si un clientespère recevoir une commande en 24 heures, vous pouvez inclure ce délai dans les valeurs que vousspécifiez lors de l'enregistrement de vos activités.

Lorsque vous exécutez le flux de travail, il se peut que certaines activités nécessitent d'être effectuéesplusieurs fois, peut-être avec entrées variables. Par exemple, dans un flux de travail de commande client,vous pouvez avoir une activité qui gère les articles achetés. Si le client achète plusieurs éléments, cetteactivité devra s'exécuter plusieurs fois. Amazon SWF possède le concept de tâche d'activité, qui représenteun appel d'une activité. Dans notre exemple, le traitement de chaque article serait représenté par une tâched'activité unique.

Un outil de traitement d'activité est un programme qui reçoit les tâches d'activité, qui les accomplit et quirenvoie les résultats. Notez que la tâche elle-même peut être réalisée par une personne, auquel cas cette

Version de l'API 2012-01-254

Page 11: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurExécution de flux de travail

dernière doit utiliser le logiciel de l'outil de traitement d'activité pour recevoir et terminer la tâche. Parexemple, il peut s'agir d'un analyste de statistiques, qui reçoit des ensembles de données, les analyse, puisrenvoie l'analyse.

Les tâches d'activité—et les outils de traitement d'activité qui les exécutent—peuvent être exécutés defaçon synchrone ou asynchrone. Elles peuvent être distribuées sur plusieurs ordinateurs, voire dansdifférentes régions géographiques, ou elles peuvent être exécutées sur le même ordinateur. Des outils detraitement d'activité séparés peuvent être écrits dans des langages de programmation différent et peuventutiliser des systèmes d'exploitation distincts. Par exemple, un outil de traitement d'activité peut être exécutésur un ordinateur de bureau en Asie, tandis qu'un autre peut être exécuté sur un ordinateur portable auxÉtats-Unis.

La logique de coordination d'un flux de travail se trouve dans un logiciel appelé décideur. Le décideurplanifie les tâches d'activité, fournit les données d'entrée aux outils de traitement d'activité, traite lesévénements qui arrivent lorsque le flux de travail est en cours, puis termine (ou ferme) le flux de travaillorsque l'objectif est atteint.

Le rôle du service Amazon SWF consiste à fonctionner comme hub central via lequel les données sontéchangées entre le décideur, les outils de traitement d'activité et d'autres entités appropriées telles que lapersonne qui administre le flux de travail. Amazon SWF gère également l'état de l'exécution de chaque fluxde travail, ce qui permet à votre application de ne pas stocker l'état de façon durable.

Le décideur oriente le flux de travail de réception en recevant les tâches de décision à partir d'AmazonSWF et en renvoyant à Amazon SWF les décisions. Une décision représente une action ou un ensembled'actions qui constitue les prochaines étapes du flux de travail. Une décision classique consiste à planifierune tâche d'activité. Les décisions peuvent aussi servir à définir des temporisateurs afin de différerl'exécution d'une tâche d'activité, à demander l'annulation de tâches d'activité en cours et à terminer ou àfermer le flux de travail.

Pour que les outils de traitement d'activité et le décideur reçoivent leurs tâches (tâches d'activité et tâchesde décision, respectivement), ils interrogent le service Amazon SWF.

Amazon SWF informe le décideur de l'état du flux de travail en incluant une copie de l'historiqued'exécution de flux de travail actuel dans chaque tâche de décision. L'historique d'exécution du flux detravail se compose d'événements. Chacun d'eux représente un changement important de l'état d'exécutiondu flux de travail. Par exemple, il peut s'agir de l'achèvement d'une tâche, de la notification de l'expirationd'une tâche ou de l'expiration d'un temporisateur qui avait été défini dans l'exécution de flux de travail.L'historique est un enregistrement complet, cohérent et fiable de la progression du flux de travail.

Le contrôle d'accès Amazon SWF utilise AWS Identity and Access Management (IAM), ce qui vous permetde fournir l'accès aux ressources AWS d'une manière contrôlée et limitée qui n'expose pas vos clésd'accès. Par exemple, vous pouvez autoriser un utilisateur à accéder à votre compte, mais uniquementpour exécuter certains flux de travail dans un domaine particulier.

Exécution de flux de travailEn regroupant tous les concepts présentés dans les sections précédentes, voici une vue d'ensemble desétapes à suivre pour développer et exécuter un flux de travail dans Amazon SWF :

1. Créez des outils de traitement d'activité qui mettent en œuvre les étapes de traitement de votre flux detravail.

2. Créez un décideur pour mettre en œuvre la logique de coordination de votre flux de travail.3. Enregistrez vos activités et votre flux de travail avec Amazon SWF.

Vous pouvez ici procéder par programmation ou à l'aide d'AWS Management Console.4. Lancez les outils de traitement d'activité et le décideur.

Version de l'API 2012-01-255

Page 12: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurExécution de flux de travail

Ces acteurs peuvent être exécutés sur n'importe quel périphérique informatique ayant accès à un pointde terminaison Amazon SWF. Par exemple, vous pouvez utiliser des instances de calcul dans le cloud,telles que les serveurs Amazon Elastic Compute Cloud (Amazon EC2) de votre centre de données, voireun appareil mobile, pour héberger un décideur ou un outil de traitement d'activité. Une fois démarrés, ledécideur et les outils de traitement d'activité se mettent à rechercher les tâches dans Amazon SWF.

5. Démarrez une ou plusieurs exécutions de flux de travail.

Les exécutions peuvent être lancées soit par programmation, soit via AWS Management Console.

Chaque exécution est indépendante et vous pouvez fournir à chacune son propre ensemble de donnéesd'entrée. Lors du lancement d'une exécution, Amazon SWF planifie la tâche de décision initiale. Enréponse, le décideur commence à générer des décisions qui initient des tâches de l'activité. L'exécutioncontinue jusqu'à ce que le décideur prenne la décision de fermer l'exécution.

6. Affichez les exécutions de flux de travail via AWS Management Console.

Vous pouvez filtrer et afficher tous les détails des exécutions en cours et des exécutions terminées. Parexemple, vous pouvez sélectionner une exécution ouverte pour afficher les tâches qui ont eu lieu et leursrésultats.

Version de l'API 2012-01-256

Page 13: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCompte AWS et clés d'accès

Mise en route de la configurationavec Amazon SWF

Rubriques• Compte AWS et clés d'accès (p. 7)• Points de terminaison (p. 8)

Cette section décrit les conditions préalables requises pour le développement avec Amazon SimpleWorkflow Service (Amazon SWF), ainsi que les options de développement disponibles. La première étaped'utilisation d'un service AWS consiste à créer un compte AWS, ce que nous décrivons en détail dans lasection suivante. Une fois que votre compte est configuré, vous avez la possibilité de développer pourAmazon SWF dans l'un des langages de programmation pris en charge par AWS. Pour les développeursJava et Ruby, AWS Flow Framework est également disponible. AWS Identity and Access Managementvous permet d'accorder à des personnes autres que le propriétaire du compte AWS l'accès aux ressourcesAmazon SWF.

Compte AWS et clés d'accèsPour accéder à Amazon SWF, vous devez créer un compte AWS.

Pour s'inscrire à un compte AWS

1. Ouvrez https://portal.aws.amazon.com/billing/signup.2. Suivez les instructions en ligne.

Dans le cadre de la procédure d'inscription, vous recevrez un appel téléphonique et vous saisirez uncode de vérification en utilisant le clavier numérique du téléphone.

Les clés d'accès se composent d'un ID de clé d'accès et d'une clé d'accès secrète, qui permettent designer les demandes par programme auprès des services AWS. Si vous n'avez pas de clé d'accès, vouspouvez en créer dans AWS Management Console. À titre de bonne pratique, n'utilisez pas les clés d'accèsUtilisateur racine d'un compte AWS pour une tâche lorsque cela n'est pas nécessaire. À la place créez unutilisateur administrateur IAM avec les clés d'accès pour vous-même.

Vous pouvez uniquement afficher ou télécharger les clés d'accès secrètes lorsque vous les créez. Vousne pouvez pas les récupérer plus tard. Cependant, vous pouvez créer de nouvelles clés d'accès à toutmoment. Vous devez également disposer des autorisations permettant d'effectuer les opérations IAMnécessaires. Pour de plus amples informations, veuillez consulter Autorisations requises pour accéder auxressources IAM dans le manuel IAM Guide de l'utilisateur.

Pour créer des clés d'accès pour un utilisateur IAM

1. Connectez-vous à la AWS Management Console et ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

2. Dans le volet de navigation, sélectionnez Utilisateurs.3. Choisissez le nom utilisateur dont vous souhaitez gérer les clés d'accès, puis sélectionnez l'onglet

Security credentials (Informations d'identification de sécurité).

Version de l'API 2012-01-257

Page 14: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurPoints de terminaison

4. Dans la section Access keys (Clés d'accès), cliquez sur Create access key (Créer une clé d'accès).5. Pour afficher la nouvelle clé d'accès, choisissez Show (Afficher). Vous ne pourrez pas accéder à la

clé d'accès secrète à nouveau une fois que cette boîte de dialogue se sera fermée. Vos informationsd'identification s'afficheront comme suit :

• ID de clé d'accès : AKIAIOSFODNN7EXAMPLE• Clé d'accès secrète : wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. Pour télécharger la paire de clés, choisissez Télécharger le fichier .csv. Stockez les clés dans unemplacement sûr. Vous ne pourrez pas accéder à la clé d'accès secrète à nouveau une fois que cetteboîte de dialogue se sera fermée.

Préservez la confidentialité des clés afin de protéger votre compte AWS et ne les envoyez jamais pare-mail. Ne les divulguez à personne hors de votre entreprise, même si vous recevez une demandequi semble provenir d'AWS ou d'Amazon.com. Aucun véritable représentant d'Amazon ne vousdemandera jamais de lui fournir votre clé secrète.

7. Après avoir téléchargé le fichier .csv, choisissez Close (Fermer). Lorsque vous créez une clé d'accès,la paire de clés est activée par défaut et vous pouvez utiliser la paire immédiatement.

Voir aussi

• Qu'est-ce que l'IAM? dans le IAM Guide de l'utilisateur• Informations d'identification de sécurité AWS dans AWS General Reference

Points de terminaisonPour réduire la latence et stocker les données à un emplacement correspondant à vos besoins, AmazonSWF fournit des points de terminaison dans différentes régions.

Chaque point de terminaison d'Amazon SWF est totalement indépendant : les domaines, les flux de travailet les activités que vous avez enregistrés dans une région ne partagent pas les données ou les attributsde ceux d'une autre région. En d'autres termes, lorsque vous enregistrez un domaine, un flux de travailou une activité Amazon SWF, il existe uniquement au sein de la région au sein de laquelle vous l'avezenregistré. Par exemple, vous pouvez enregistrer un domaine nommé SWF-Flows-1 dans deux régionsdifférentes, mais ils ne partageront pas les données et les attributs—chacun d'eux agira en tant quedomaine totalement indépendant.

Pour obtenir la liste des points de terminaison Amazon SWF, consultez la section Régions et points determinaison.

Version de l'API 2012-01-258

Page 15: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Subscription Workflow Tutorial withAmazon SWF and Amazon SNS

Cette section fournit un didacticiel qui décrit comment créer une application de flux de travail Amazon SWFcomposée de quatre activités qui fonctionnent de manière séquentielle. Elle couvre également les actionssuivantes :

• Setting default and execution-time workflow and activity options.• Polling Amazon SWF for decision and activity tasks.• Passing data between the activities and the workflow with Amazon SWF.• Waiting for human tasks and reporting heartbeats to Amazon SWF from an activity task.• Using Amazon SNS to create a topic, subscribe a user to it, and publish messages to subscribed

endpoints.

Vous pouvez utiliser Amazon Simple Workflow Service (Amazon SWF) et Amazon Simple NotificationService (Amazon SNS) ensemble afin d'imiter un flux de travail « manuel »—c'est-à-dire un flux de travailqui nécessite l'intervention d'une personne pour effectuer une action, puis pour communiquent avecAmazon SWF afin de lancer l'activité suivante dans le flux de travail.

Comme Amazon SWF est un service Web basé sur le cloud, la communication avec Amazon SWF peutprovenir de n'importe quel endroit où une connexion Internet est disponible. Dans ce cas, nous allonsutiliser Amazon SNS pour communiquer avec l'utilisateur par e-mail et/ou par SMS.

Ce didacticiel utilise l'accès Kit SDK AWS pour Ruby à Amazon SWF et à Amazon SNS, mais il existede nombreuses options de développement disponibles, y compris le AWS Flow Framework for Ruby, quifournit plus facilement la coordination et la communication avec Amazon SWF.

Note

Ce didacticiel utilise la version 1 du kit Kit SDK AWS pour Ruby. Le kit Kit SDK pour Rubycontinue à fonctionner, mais nous vous recommandons d'utiliser AWS Flow Framework pour Javaà la place.

Pour obtenir une liste complète des options de développement Amazon SWF, consultez Options dedéveloppement (p. 1).

Rubriques• About the Workflow (p. 10)• Prerequisites (p. 10)• Tutorial Steps (p. 10)• Première partie du didacticiel sur le flux de travail d'abonnement : utilisation de Amazon SWF avec le

Kit SDK AWS pour Ruby (p. 11)• Deuxième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre du flux de

travail (p. 13)• Troisième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre des

activités (p. 20)• Quatrième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre de l'observateur de

tâches d'activité (p. 28)• Subscription Workflow Tutorial: Running the Workflow (p. 30)

Version de l'API 2012-01-259

Page 16: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAbout the Workflow

About the WorkflowLe flux de travail que nous allons développer se compose de quatre grandes étapes :

1. Obtenez une adresse d'abonnement (e-mail ou SMS) de la part de l'utilisateur.2. Créez une rubrique SNS et abonnez-y les points de terminaison fournis.3. Attendez que l'utilisateur confirme l'abonnement.4. Si l'utilisateur le confirme, publiez un message de félicitations dans la rubrique.

Ces étapes comprennent des activités qui s'effectuent automatiquement (étapes 2 et 4), et d'autres quinécessitent l'intervention d'une personne pour fournir des données à l'activité pour que le flux de travailpuisse poursuivre (étapes 1 et 3).

Chaque étape repose sur des données générées par l’étape précédente (vous devez disposer d’un critèred’évaluation avant de l’inscrire à un sujet, et vous devez avoir un abonnement de sujet avant de pouvoirattendre la confirmation, etc.) Ce didacticiel couvrira également la manière de fournir des résultats d’activitéà la fin de l’opération, et comment transmettre l’entrée à une tâche programmée. Amazon SWF gère lacoordination et la transmission des informations entre les activités et le flux de travail, et vice versa.

Nous utilisons également des entrées au clavier et Amazon SNS pour traiter la communication entreAmazon SWF et la personne qui fournit les données au flux de travail. En pratique, de nombreusestechniques différentes permettent de communiquer avec les utilisateurs, mais Amazon SNS permet de lesavertir très facilement par e-mail ou par SMS en cas d'événement dans le flux de travail.

PrerequisitesPour suivre ce didacticiel, vous avez besoin des éléments suivants :

• Amazon Web Services (AWS) account• Ruby interpreter• Kit SDK AWS pour Ruby

Si vous remplissez ces conditions, vous êtes prêt à continuer. Si vous ne voulez pas exécuter l'exemple,vous pouvez toujours suivre le didacticiel—la majeure partie de son contenu s'applique à l'utilisationd'Amazon SWF et d'Amazon SNS, indépendamment des options de développement (p. 1) que vousutilisez.

Tutorial StepsCe didacticiel est divisé selon les étapes suivantes :

1. Première partie du didacticiel sur le flux de travail d'abonnement : utilisation de Amazon SWF avec le KitSDK AWS pour Ruby (p. 11)

2. Deuxième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre du flux detravail (p. 13)

3. Troisième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre desactivités (p. 20)

4. Quatrième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre de l'observateur detâches d'activité (p. 28)

Version de l'API 2012-01-2510

Page 17: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurPartie 1 : Utilisation de AmazonSWF avec le Kit SDK pour Ruby

5. Subscription Workflow Tutorial: Running the Workflow (p. 30)

Première partie du didacticiel sur le flux de travaild'abonnement : utilisation de Amazon SWF avec leKit SDK AWS pour Ruby

Rubriques• Incluez le Kit SDK AWS pour Ruby (p. 11)• Configuration de la session AWS (p. 11)• Inscription d'un domaine Amazon SWF (p. 12)• Étapes suivantes (p. 13)

Incluez le Kit SDK AWS pour RubyCommencez par créer un fichier nommé utils.rb. Le code de ce fichier permettra d'obtenir ou de créer,si nécessaire, le domaine Amazon SWF utilisé par le flux de travail et le code des activités. Il permettraégalement de stocker le code commun à tous nos cours.

Pour commencer, nous devons inclure la bibliothèque aws-sdk-v1 dans notre code, afin de pouvoirutiliser les fonctionnalités fournies par le kit Kit SDK pour Ruby.

require 'aws-sdk-v1'

Cette approche nous donne accès à l'espace de noms AWS, qui permet de définir des valeurs globalesrelatives à la session, telles que vos informations d'identification AWS et la région, et fournit également unaccès aux API des services AWS.

Configuration de la session AWSPour configurer la session AWS, nous allons définir nos informations d'identification AWS (qui sontrequises pour l'accès aux services AWS) et la région AWS à utiliser.

Plusieurs options s'offrent à vous pour définir les informations d'identification AWS dans le kit SDKAWS pour Ruby : en les spécifiant dans des variables d'environnement (AWS_ACCESS_KEY_ID etAWS_SECRET_ACCESS_KEY) ou vis AWS.config. Nous allons utiliser cette deuxième méthode dece dernier, en les chargeant à partir d'un fichier de configuration YAML, appelé aws-config.txt, quiressemble à cela.

---:access_key_id: REPLACE_WITH_ACCESS_KEY_ID:secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY

Créez ce fichier maintenant, en remplaçant les chaînes commençant par REPLACE_WITH_ par votre ID declé d'accès et votre clé d'accès secrète AWS. Pour plus d'informations sur vos clés d'accès AWS, consultezComment puis-je obtenir les informations d'identification de sécurité ? dans le manuel Référence généraled'Amazon Web Services.

Vous devez également définir la région AWS à utiliser. Comme nous allons utiliser le service SMS (ShortMessage Service) pour envoyer des SMS au téléphone de l'utilisateur avec Amazon SNS, nous devons

Version de l'API 2012-01-2511

Page 18: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurInscription d'un domaine Amazon SWF

nous assurer que nous utilisons une région prise en charge par Amazon SNS. Consultez Régions et payspris en charge dans le Amazon Simple Notification Service Manuel du développeur.

Note

Si vous n'avez pas accès à us-east-1 ou si cette fonctionnalité n'a pas d'intérêt pour vous dansle cadre de cette démonstration, vous pouvez utiliser la région que vous souhaitez. Vous pouvezremplacer la fonctionnalité SMS de cet exemple par l'e-mail comme point de terminaison uniquepour s'abonner à la rubrique Amazon SNS.Pour plus d'informations sur l'envoi de messages SMS, consultez la section Envoi et réception denotifications par SMS avec Amazon SNS dans le Amazon Simple Notification Service Manuel dudéveloppeur.

Nous allons maintenant ajouter du code dans le fichier utils.rb afin de charger le fichier deconfiguration, d'obtenir les informations d'identification de l'utilisateur, puis de fournir les informationsd'identification et la région dans AWS.config.

require 'yaml'

# Load the user's credentials from a file, if it exists.begin config_file = File.open('aws-config.txt') { |f| f.read }rescue puts "No config file! Hope you set your AWS credentials in the environment..."end

if config_file.nil? options = { }else options = YAML.load(config_file)end

# SMS Messaging (which can be used by Amazon SNS) is available only in the# `us-east-1` region.$SMS_REGION = 'us-east-1'options[:region] = $SMS_REGION

# Now, set the optionsAWS.config = options

Inscription d'un domaine Amazon SWFPour utiliser Amazon SWF, vous devez configurer un domaine : entité nommée qui contient vos activitéset vos flux de travail. Vous pouvez avoir un grand nombre de domaines Amazon SWF enregistrés, mais ilsdoivent tous avoir un nom unique au sein de votre compte AWS. Par ailleurs, les flux de travail ne peuventpas interagir entre les domaines : tous les flux de travail et toutes les activités de votre application doiventêtre dans le même domaine pour interagir avec les uns avec les autres.

Comme nous allons utiliser le même domaine dans toute l'application, nous allons créer unefonction dans utils.rb appelée init_domain. Celle-ci extraira le domaine Amazon SWF nomméSWFSampleDomain.

Une fois que vous avez enregistré un domaine, vous pouvez le réutiliser pour de nombreuses exécutionsde flux de travail. Toutefois, il n'est pas correct d'essayer d'enregistrer un domaine qui existe déjà. Dès lors,notre code doit vérifiera d'abord si le domaine existe et utilisera le domaine existant, s'il le trouve. S'il netrouve pas le domaine, nous le créerons.

Pour gérer les domaines Amazon SWF dans le kit Kit SDK pour Ruby, utilisezAWS::SimpleWorkflow.domains, qui renvoie une valeur DomainCollection qui permet à la fois d'énuméreret d'enregistrer les domaines :

Version de l'API 2012-01-2512

Page 19: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurÉtapes suivantes

• Pour vérifier si un domaine est déjà enregistré, vous pouvez consulter la liste fournie parAWS::Simpleworkflow.domains.registered.

• Pour enregistrer un nouveau domaine, utilisez AWS::Simpleworkflow.domains.register.

Voici le code pour init_domain dans le fichier utils.rb.

# Registers the domain that the workflow will run in.def init_domain domain_name = 'SWFSampleDomain' domain = nil swf = AWS::SimpleWorkflow.new

# First, check to see if the domain already exists and is registered. swf.domains.registered.each do | d | if(d.name == domain_name) domain = d break end end

if domain.nil? # Register the domain for one day. domain = swf.domains.create( domain_name, 1, { :description => "#{domain_name} domain" }) end

return domainend

Étapes suivantesVous allez ensuite créer le code du flux de travail et du démarreur dans Deuxième partie du didacticiel surle flux de travail d'abonnement : mise en œuvre du flux de travail (p. 13).

Deuxième partie du didacticiel sur le flux de travaild'abonnement : mise en œuvre du flux de travail

Jusqu'à présent, notre code est assez générique. Nous entrons à présent dans la partie où l'on commenceà définir réellement ce que fait notre flux de travail, ainsi que les activités nécessaires pour le mettre enœuvre.

Rubriques• Conception du flux de travail (p. 13)• Configuration du code de flux de travail (p. 14)• Enregistrement du flux de travail (p. 15)• Recherche de décisions (p. 16)• Lancement de l'exécution du flux de travail (p. 18)• Étapes suivantes (p. 20)

Conception du flux de travailPour rappel, l'idée initiale de ce flux de travail comprenait les étapes suivantes :

Version de l'API 2012-01-2513

Page 20: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurConfiguration du code de flux de travail

1. Obtenez une adresse d'abonnement (e-mail ou SMS) de la part de l'utilisateur.2. Créez une rubrique SNS et abonnez-y les points de terminaison fournis.3. Attendez que l'utilisateur confirme l'abonnement.4. Si l'utilisateur le confirme, publiez un message de félicitations dans la rubrique.

Nous pouvons considérer chaque étape de notre flux de travail comme activité qu'il doit exécuter. Le fluxde travail est responsable de la planification de chaque activité à l'heure appropriée et de la coordination dutransfert des données entre les activités.

Pour ce flux de travail, nous créerons une activité distincte pour chacune de ces étapes, en leur donnant lenom descriptif suivant :

1. get_contact_activity2. subscribe_topic_activity3. wait_for_confirmation_activity4. send_result_activity

Ces activités seront exécutées dans l'ordre, et les données de chaque étape seront utilisées à l'étapesuivante.

Nous pourrions concevoir notre application pour que tout le code se trouve dans un fichier source,mais cette approche va à l'encontre de la manière dont Amazon SWF a été conçu. En effet, il convientparticulièrement aux flux de travail qui couvrent l'intégralité d'Internet. Dès lors, nous allons répartirl'application en deux fichiers exécutables distincts :

• swf_sns_workflow.rb : contient le flux de travail et le démarreur.• swf_sns_activities.rb : contient les activités et leur démarreur.

Les implémentations du flux de travail et des activités peuvent être exécutées dans des fenêtres distinctes,sur des ordinateurs séparés, voire dans différentes régions du monde. Comme Amazon SWF assurele suivi des détails de vos flux de travail et de vos activités, votre flux de travail peut coordonner laplanification des activités et le transfert des données associées, indépendamment de l'endroit où elles sontexécutées.

Configuration du code de flux de travailNous commencerons par créer un fichier nommé swf_sns_workflow.rb. Dans ce fichier, déclarezune classe appelée SampleWorkflow. Voici la déclaration de classe et son constructeur, la méthodeinitialize.

require_relative 'utils.rb'

# SampleWorkflow - the main workflow for the SWF/SNS Sample## See the file called `README.md` for a description of what this file does.class SampleWorkflow

attr_accessor :name

def initialize(workflowId)

# the domain to look for decision tasks in. @domain = init_domain

Version de l'API 2012-01-2514

Page 21: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnregistrement du flux de travail

# the task list is used to poll for decision tasks. @workflowId = workflowId

# The list of activities to run, in order. These name/version hashes can be # passed directly to AWS::SimpleWorkflow::DecisionTask#schedule_activity_task. @activity_list = [ { :name => 'get_contact_activity', :version => 'v1' }, { :name => 'subscribe_topic_activity', :version => 'v1' }, { :name => 'wait_for_confirmation_activity', :version => 'v1' }, { :name => 'send_result_activity', :version => 'v1' }, ].reverse! # reverse the order... we're treating this like a stack.

register_workflow end

Comme vous pouvez le voir, nous conservons les données d'instance de classe suivantes :

• domain : nom de domaine extrait d'init_domain dans utils.rb.• workflowId : liste des tâches transmises à initialize.• activity_list : liste d'activités, avec le nom et la version des activités que nous allons exécuter.

Le nom de domaine, ainsi que le nom et la version de l'activité suffisent à Amazon SWF pour identifierpositivement un type d'activité. Dès lors, ce sont les seules données dont nous avons besoin concernantles activités afin de les planifier.

La liste des tâches est utilisée par le code de décideur du flux de travail pour rechercher les tâches dedécision et les activités de planification.

A la fin de cette fonction, nous appelons une méthode que nous n'avons pas encore définie :register_workflow. Nous définirons cette méthode ensuite.

Enregistrement du flux de travailPour utiliser un type de flux de travail, nous devons tout d'abord l'enregistrer. Comme un type d'activité, untype de flux de travail est identifié par son domaine, son nom et sa version. En outre, comme les domaineset les types d'activités, vous ne peut pas ré-enregistrer un type de flux de travail existant. Si vous avezbesoin de modifier un type de flux de travail, vous devez le faire via une nouvelle version, ce qui crée unautre type.

Voici le code du flux de travail register_workflow, qui est utilisé pour récupérer le type de flux detravail existant que nous avons enregistré lors d'une exécution précédente ou pour l'enregistrer si cela n'estpas déjà fait.

# Registers the workflow def register_workflow workflow_name = 'swf-sns-workflow' @workflow_type = nil

# a default value... workflow_version = '1'

# Check to see if this workflow type already exists. If so, use it. @domain.workflow_types.each do | a | if (a.name == workflow_name) && (a.version == workflow_version) @workflow_type = a end end

if @workflow_type.nil?

Version de l'API 2012-01-2515

Page 22: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRecherche de décisions

options = { :default_child_policy => :terminate, :default_task_start_to_close_timeout => 3600, :default_execution_start_to_close_timeout => 24 * 3600 }

puts "registering workflow: #{workflow_name}, #{workflow_version}, #{options.inspect}" @workflow_type = @domain.workflow_types.register(workflow_name, workflow_version, options) end

puts "** registered workflow: #{workflow_name}" end

Tout d'abord, pour vérifier si le nom et la version du flux de travail sont déjà enregistrés, nous procédonsà l'itération via la collection workflow_types du domaine. Si nous constatons une correspondance, nousutiliserons le type de flux de travail qui a déjà été enregistré.

Si nous ne trouvons pas de correspondance, un nouveau type de flux de travail est enregistré (en appelantregister au niveau de la même collection workflow_types que celle dans laquelle nous avons recherchéle flux de travail) avec le nom « swf-sns-workflow », « version 1 » et les options suivantes.

options = { :default_child_policy => :terminate, :default_task_start_to_close_timeout => 3600, :default_execution_start_to_close_timeout => 24 * 3600 }

Les options transmises lors de l'enregistrement sont utilisées pour définir le comportement par défaut denotre type de flux de travail. Dès lors, nous n'avons pas besoin de définir ces valeurs chaque fois nous quenous débutons une nouvelle exécution de flux de travail.

Ici, nous définissons uniquement certaines valeurs de délai : la durée maximale entre le début d'une tâcheet sa fin (une heure), et la durée maximale d'exécution du flux de travail (24 heures). Si un de ces délais estdépassé, la tâche ou le flux de travail expire.

Pour plus d'informations sur les valeurs de ces délais, consultez la section Amazon SWF Types de délai (p. 143).

Recherche de décisionsUn décideur se trouve au cœur de l'exécution de chaque flux de travail. La responsabilité du décideurconsiste à gérer l'exécution du flux de travail lui-même. Il reçoit les tâches de décision et y répond soit enplanifiant de nouvelles activités, en annulant des activités et en les redémarrant, soit en définissant l'état del'exécution du flux de travail comme terminé, comme annulé ou comme ayant échoué.

Le décideur utilise le nom de la liste des tâches de l'exécution du flux de travail pour recevoir des tâchesde décision et y répondre. Pour rechercher des tâches de décision, appelez pool au niveau de la collectiondecision_tasks du domaine afin de parcourir les tâches de décision disponibles. Vous pouvez ensuiterechercher les nouveaux événements dans la tâche de la décision en procédant à une itération avec sacollection new_events.

Les événements renvoyés sont les objets AWS::SimpleWorkflow::HistoryEvent. Pour obtenir le typed'événement, utilisez le membre event_type correspondant. Pour obtenir une liste et une descriptiondes types d'événements d'historique, consultez la section HistoryEvent dans le manuel Amazon SimpleWorkflow Service API Reference.

Voici le début de la logique de l'observateur de tâches de décision. Une nouvelle méthode dans notreclasse de flux de travail a appelé poll_for_decisions.

Version de l'API 2012-01-2516

Page 23: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRecherche de décisions

def poll_for_decisions # first, poll for decision tasks... @domain.decision_tasks.poll(@workflowId) do | task | task.new_events.each do | event | case event.event_type

Nous allons maintenant connecter l'exécution de notre décideur en fonction de l'event_type reçu. Lepremier type d'événement que nous sommes susceptibles de recevoir est WorkflowExecutionStarted. Encas de réception de cet événement, Amazon SWF signale à votre décideur qu'il doit commencer l'exécutiondu flux de travail. Nous allons commencer par planifier la première activité. Pour ce faire, nous appelonsschedule_activity_task au niveau de la tâche que nous avons reçu lors de la recherche.

Nous lui transmettons la première activité que nous avons déclarée dans notre liste d'activités, qui occupela position last dans la liste, car nous avons inversé cette dernière pour l'utiliser telle une pile. Les« activités » que nous avons définies sont seulement des cartes composées d'un nom et d'un numéro deversion, mais c'est tout ce dont Amazon SWF a besoin pour identifier l'activité à planifier, en supposantqu'elle ait déjà été enregistrée.

when 'WorkflowExecutionStarted' # schedule the last activity on the (reversed, remember?) list to # begin the workflow. puts "** scheduling activity task: #{@activity_list.last[:name]}"

task.schedule_activity_task( @activity_list.last, { :workflowId => "#{@workflowId}-activities" } )

Lorsque nous planifions une activité, Amazon SWF envoie à la liste des tâches d'activité une tâched'activité que nous transmettons lors de sa planification, indiquant ainsi à la tâche de commencer. Nousnous intéresserons aux tâches d'activité dans la section Troisième partie du didacticiel sur le flux de travaild'abonnement : mise en œuvre des activités (p. 20), mais il est important de noter que nous n'exécutonspas la tâche ici. Nous indiquons seulement à Amazon SWF qu'elle doit être planifiée.

L'activité suivante que nous devons traiter est l'événement ActivityTaskCompleted qui a lieu lorsqu'AmazonSWF; reçoit une réponse de fin d'activité de la part d'une tâche d'activité.

when 'ActivityTaskCompleted' # we are running the activities in strict sequential order, and # using the results of the previous activity as input for the next # activity. last_activity = @activity_list.pop

if(@activity_list.empty?) puts "!! All activities complete! Sending complete_workflow_execution..." task.complete_workflow_execution return true; else # schedule the next activity, passing any results from the # previous activity. Results will be received in the activity # task. puts "** scheduling activity task: #{@activity_list.last[:name]}" if event.attributes.has_key?('result') task.schedule_activity_task( @activity_list.last, { :input => event.attributes[:result], :workflowId => "#{@workflowId}-activities" } ) else task.schedule_activity_task( @activity_list.last, { :workflowId => "#{@workflowId}-activities" } ) end end

Version de l'API 2012-01-2517

Page 24: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLancement de l'exécution du flux de travail

Dans la mesure où nous exécutons nos tâches de façon linéaire et qu'une seule activité est exécutée à lafois, nous profitons de cette occasion pour afficher la tâche terminée à partir de la pile activity_list.Si une liste vide apparaît, nous savons que le flux de travail est terminé. Dans ce cas, nous signalons àAmazon SWF que notre flux de travail est terminé en appelant complete_workflow_execution au niveau dela tâche.

Dans le cas où la liste contiendrait encore des entrées, nous allons planifier l'activité suivante qui s'y trouve(une fois encore, en dernière position). Cette fois-ci, cependant, nous allons voir si l'activité précédentea renvoyé des données de résultat à Amazon SWF à la fin, ce qui est fourni au flux de travail dansles attributs de l'événement, dans la clé result facultative. Si l'activité a généré un résultat, nous letransmettrons comme option input à la prochaine activité planifiée, avec la liste des tâches d'activité.

En récupérant les valeurs result des activités terminées et en définissant les valeurs input des activitésplanifiées, nous pouvons transférer les données d'une activité à l'autre, ou nous pouvons utiliser lesdonnées d'une activité pour modifier le comportement du décideur en fonction des résultats d'une activité.

Pour les besoins de ce didacticiel, ces deux types d'événements sont les plus importants pour définirle comportement de notre flux de travail. Toutefois, une activité peut générer des événements autresqu'ActivityTaskCompleted. Nous allons finaliser le code du décideur en fournissant un code de gestionnairede démonstration pour les événements ActivityTaskTimedOut et ActivityTaskFailed, ainsi que pourl'événement WorkflowExecutionCompleted, qui sera généré quand Amazon SWF traitera l'appelcomplete_workflow_execution que nous envoyons lorsque nous manquons d'activités à exécuter.

when 'ActivityTaskTimedOut' puts "!! Failing workflow execution! (timed out activity)" task.fail_workflow_execution return false

when 'ActivityTaskFailed' puts "!! Failing workflow execution! (failed activity)" task.fail_workflow_execution return false

when 'WorkflowExecutionCompleted' puts "## Yesss, workflow execution completed!" task.workflow_execution.terminate return false end end end end

Lancement de l'exécution du flux de travailAvant que le flux de travail puisse rechercher des tâches de décision, nous devons lancer l'exécution duflux de travail.

Pour démarrer l'exécution de flux de travail, appelez start_execution au niveau du type de flux de travailenregistré (AWS::SimpleWorkflow::WorkflowType). Nous allons définir un petit wrapper à ce niveau afind'exploiter le membre d'instance workflow_type que nous avons récupéré dans le constructeur declasse.

def start_execution workflow_execution = @workflow_type.start_execution( { :workflowId => @workflowId } ) poll_for_decisions endend

Version de l'API 2012-01-2518

Page 25: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLancement de l'exécution du flux de travail

Une fois que le flux de travail s'exécute, les événements décision commencent à apparaître dans la listedes tâches correspondante, qui est transmise comme une option d'exécution du flux de travail dansstart_execution.

Contrairement aux options qui sont fournies lorsque le type de flux de travail est enregistré, celles qui sonttransmises à start_execution ne sont pas considérées comme faisant partie du type de flux de travail.Vous êtes libre de les modifier pour chaque exécution du flux de travail sans avoir à changer de version duflux de travail.

Dans la mesure où nous souhaiterions que le flux de travail se lance lorsque nous exécutons le fichier,ajoutez le code qui instancie la classe, puis qui appelle la méthode start_execution que nous venonsde définir.

if __FILE__ == $0 require 'securerandom'

# Use a different task list name every time we start a new workflow execution. # # This avoids issues if our pollers re-start before SWF considers them closed, # causing the pollers to get events from previously-run executions. workflowId = SecureRandom.uuid

# Let the user start the activity worker first...

puts "" puts "Amazon SWF Example" puts "------------------" puts "" puts "Start the activity worker, preferably in a separate command-line window, with" puts "the following command:" puts "" puts "> ruby swf_sns_activities.rb #{workflowId}-activities" puts "" puts "You can copy & paste it if you like, just don't copy the '>' character." puts "" puts "Press return when you're ready..."

i = gets

# Now, start the workflow.

puts "Starting workflow execution." sample_workflow = SampleWorkflow.new(workflowId) sample_workflow.start_executionend

Pour éviter tout conflit de nom dans la liste des tâches, nous utiliserons SecureRandom.uuid pourgénérer un UUID aléatoire que nous utiliserons comme nom de la liste de tâches. Nous garantissons ainsiqu'un nom de liste de tâches différent s'applique à chaque exécution de flux de travail.

Note

Les listes de tâches permettent d'enregistrer les événements concernant une exécution de flux detravail. Donc, si vous utilisez la même liste des tâches pour plusieurs exécutions du même type deflux de travail, vous pouvez obtenir des événements qui ont été générés au cours d'une exécutionprécédente, surtout si vous avez procédé de manière quasi consécutive (ce qui est souvent le caslorsque vous effectuez des tests, comme celui d'un nouveau code).

Pour éviter d'avoir à gérer les éléments issues des précédentes exécutions, nous pouvons utiliser unenouvelle liste des tâches pour chaque exécution, en le spécifiant lorsque nous commençons l'exécution duflux de travail.

Version de l'API 2012-01-2519

Page 26: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurÉtapes suivantes

Un peu de code est également nécessaire ici pour fournir des instructions à la personne chargée del'exécution (vous, dans la plupart des cas) et pour fournir la version d'« activité » de la liste des tâches. Ledécideur utilisera le nom de cette liste de tâches pour planifier les activités du flux de travail, tandis quela mise en œuvre des activités écoutera les événements d'activité correspondant à cette liste pour savoirquand commencer les activités planifiées et pour fournir des informations sur l'exécution de l'activité.

Le code attend également que l'utilisateur commence à exécuter le démarreur d'activités avant de lancerl'exécution du flux de travail. Le démarreur d'activités sera donc en mesure de réagir lorsque les tâchesd'activité commenceront à apparaître dans la liste des tâches fournie.

Étapes suivantesVous avez implémenté le flux de travail. Vous définirez ensuite les activités et un démarreur, dansla section Troisième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre desactivités (p. 20).

Troisième partie du didacticiel sur le flux de travaild'abonnement : mise en œuvre des activités

Nous allons maintenant mettre en œuvre chacune des activités de notre flux de travail, en commençant parune classe de base qui fournit des fonctions courantes pour le code d'activité.

Rubriques• Définition d'un type d'activité de base (p. 20)• Définition de GetContactActivity (p. 22)• Définition de SubscribeTopicActivity (p. 23)• Définition de WaitForConfirmationActivity (p. 25)• Définition de SendResultActivity (p. 27)• Étapes suivantes (p. 28)

Définition d'un type d'activité de baseLorsque nous avons conçu le flux de travail, nous avons identifié les activités suivantes :

• get_contact_activity

• subscribe_topic_activity

• wait_for_confirmation_activity

• send_result_activity

Nous allons à présent mettre en œuvre chacune de ces activités. Comme nos activités partagent certainesfonctions, nous allons débrouiller le chemin et créer un code commun qu'elles pourront toutes utiliser. Nousl'appellerons BasicActivity et le définirons dans un nouveau fichier appelé basic_activity.rb.

Comme avec les autres fichiers sources, nous allons inclure utils.rb pour accéder à la fonctioninit_domain permettant de configurer l'exemple de domaine.

require_relative 'utils.rb'

Version de l'API 2012-01-2520

Page 27: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition d'un type d'activité de base

Ensuite, nous allons déclarer la classe de l'activité de base et certaines données courantes qui nousintéressent pour chaque activité. Nous enregistrons l'instance AWS::SimpleWorkflow::ActivityType, le nomet les résultats de l'activité dans les attributs de la classe.

class BasicActivity

attr_accessor :activity_type attr_accessor :name attr_accessor :results

Ces attributs accéderont aux données d'instance définies dans la méthode initialize de la classe,qui utilise le nom d'une activité, ainsi qu'une version et une carte d'options facultatives, pour enregistrerl'activité avec Amazon SWF.

def initialize(name, version = 'v1', options = nil)

@activity_type = nil @name = name @results = nil

# get the domain to use for activity tasks. @domain = init_domain

# Check to see if this activity type already exists. @domain.activity_types.each do | a | if (a.name == @name) && (a.version == version) @activity_type = a end end

if @activity_type.nil? # If no options were specified, use some reasonable defaults. if options.nil? options = { # All timeouts are in seconds. :default_task_heartbeat_timeout => 900, :default_task_schedule_to_start_timeout => 120, :default_task_schedule_to_close_timeout => 3800, :default_task_start_to_close_timeout => 3600 } end @activity_type = @domain.activity_types.register(@name, version, options) end end

Comme avec l'enregistrement du type de flux de travail, si un type d'activité est déjà enregistré, nouspouvons le récupérer en examinant la collection activity_types du domaine. Si le type d'activité estintrouvable, il sera enregistré.

En outre, comme avec les types de flux de travail, vous pouvez définir des options par défaut qui serontstockées avec votre type d'activité lorsque vous l'enregistrerez.

La dernière chose que nécessite notre activité de base est une façon uniforme de l'exécuter. Nous allonsdéfinir une méthode do_activity qui utilise une tâche d'activité. Comme illustré ici, nous pouvons utiliserla tâche d'activité transmise pour recevoir les données via l'attribut d'instance input.

def do_activity(task) @results = task.input # may be nil return true end end

Version de l'API 2012-01-2521

Page 28: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de GetContactActivity

Voilà ce qui marque la fin de la classe BasicActivity. Maintenant, nous allons nous en server pour définirnos activités de manière simple et uniforme.

Définition de GetContactActivityLa première activité réalisée pendant une exécution de flux de travail est l'activitéget_contact_activity, qui récupère les informations d'abonnement de l'utilisateur à la rubriqueAmazon SNS.

Créez un fichier appelé get_contact_activity.rb et demandez à la fois yaml (que nous utiliseronspour préparer la transmission d'une chaîne à Amazon SWF) et basic_activity.rb (que nousutiliserons comme base pour cette classe GetContactActivity).

require 'yaml' require_relative 'basic_activity.rb'

# **GetContactActivity** provides a prompt for the user to enter contact # information. When the user successfully enters contact information, the # activity is complete. class GetContactActivity < BasicActivity

Dans la mesure où nous avons inclus le code d'enregistrement de l'activité dans BasicActivity, la méthodeinitialize pour GetContactActivity est assez simple. Il suffit d'appeler le constructeur de la classe debase avec le nom de l'activité, get_contact_activity. C'est tout ce qui est nécessaire pour enregistrernotre activité.

# initialize the activity def initialize super('get_contact_activity') end

Nous allons maintenant définir la méthode do_activity, qui demande l'adresse e-mail et/ou le numérode téléphone de l'utilisateur.

def do_activity(task) puts "" puts "Please enter either an email address or SMS message (mobile phone) number to" puts "receive SNS notifications. You can also enter both to use both address types." puts "" puts "If you enter a phone number, it must be able to receive SMS messages, and must" puts "be 11 digits (such as 12065550101 to represent the number 1-206-555-0101)."

input_confirmed = false while !input_confirmed puts "" print "Email: " email = $stdin.gets.strip

print "Phone: " phone = $stdin.gets.strip

puts "" if (email == '') && (phone == '') print "You provided no subscription information. Quit? (y/n)" confirmation = $stdin.gets.strip.downcase if confirmation == 'y' return false end else

Version de l'API 2012-01-2522

Page 29: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de SubscribeTopicActivity

puts "You entered:" puts " email: #{email}" puts " phone: #{phone}" print "\nIs this correct? (y/n): " confirmation = $stdin.gets.strip.downcase if confirmation == 'y' input_confirmed = true end end end

# make sure that @results is a single string. YAML makes this easy. @results = { :email => email, :sms => phone }.to_yaml return true end end

A la fin de do_activity, nous prenons le numéro de téléphone et l'adresse e-mail de l'utilisateur, plaçonsces informations dans une carte, puis utilisons to_yaml pour convertir cette carte entière en chaîne YAML.Cette action est nécessaire, car les résultats que vous transmettez à Amazon SWF lorsque vous terminezune activité doivent être uniquement des données de chaîne. La capacité de Ruby à convertir facilementdes objets en chaînes YAML et à les reconvertir en objets est particulièrement utile dans ce cas.

Voilà ce qui marque la fin de la mise en œuvre de get_contact_activity. Nous utiliserons ensuite cesdonnées dans la mise en œuvre de subscribe_topic_activity.

Définition de SubscribeTopicActivityNous allons maintenant nous plonger dans Amazon SNS et créer une activité qui utilise les informationsgénérées par get_contact_activity pour abonner l'utilisateur à une rubrique Amazon SNS.

Créez un fichier appelé subscribe_topic_activity.rb, ajoutez les mêmes exigences que cellesque nous avons utilisées pour get_contact_activity, déclarez votre classe et fournissez sa méthodeinitialize.

require 'yaml' require_relative 'basic_activity.rb'

# **SubscribeTopicActivity** sends an SMS / email message to the user, asking for # confirmation. When this action has been taken, the activity is complete. class SubscribeTopicActivity < BasicActivity

def initialize super('subscribe_topic_activity') end

Maintenant que nous avons préparé le code requis pour configurer et enregistrer l'activité, nous allonsajouter du code pour créer une rubrique Amazon SNS. Pour ce faire, nous utiliserons la méthodecreate_topic de l'objet AWS::SNS::Client.

Ajoutez la méthode create_topic à votre classe, qui utilise un objet client Amazon SNS transmis.

def create_topic(sns_client) topic_arn = sns_client.create_topic(:name => 'SWF_Sample_Topic')[:topic_arn]

if topic_arn != nil # For an SMS notification, setting `DisplayName` is *required*. Note that # only the *first 10 characters* of the DisplayName will be shown on the # SMS message sent to the user, so choose your DisplayName wisely! sns_client.set_topic_attributes( {

Version de l'API 2012-01-2523

Page 30: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de SubscribeTopicActivity

:topic_arn => topic_arn, :attribute_name => 'DisplayName', :attribute_value => 'SWFSample' } ) else @results = { :reason => "Couldn't create SNS topic", :detail => "" }.to_yaml return nil end

return topic_arn end

Une fois que nous avons l'Amazon Resource Name (ARN) de la rubrique, nous pouvons l'utiliser avec laméthode set_topic_attributes du client Amazon SNS pour définir le nom d'affichage de cette rubrique, quiest nécessaire pour l'envoi de SMS avec Amazon SNS.

Enfin, nous allons définir la méthode do_activity. Nous allons commencer par recueillir les donnéesqui ont été transmises via l'option input lorsque l'activité a été planifiée. Comme nous l'avons mentionnéprécédemment, elles doivent être transmises sous la forme d'une chaîne que nous avons créée avecto_yaml. Lors de son extraction, nous utiliserons YAML.load pour convertir les données en objets Ruby.

Voici le début de do_activity, qui nous permet de récupérer les données d'entrée.

def do_activity(task) activity_data = { :topic_arn => nil, :email => { :endpoint => nil, :subscription_arn => nil }, :sms => { :endpoint => nil, :subscription_arn => nil }, }

if task.input != nil input = YAML.load(task.input) activity_data[:email][:endpoint] = input[:email] activity_data[:sms][:endpoint] = input[:sms] else @results = { :reason => "Didn't receive any input!", :detail => "" }.to_yaml puts(" #{@results.inspect}") return false end

# Create an SNS client. This is used to interact with the service. Set the # region to $SMS_REGION, which is a region that supports SMS notifications # (defined in the file `utils.rb`). sns_client = AWS::SNS::Client.new( :config => AWS.config.with(:region => $SMS_REGION))

Si nous n'avions reçu aucune entrée, il n'y aurait pas eu beaucoup à faire. Nous aurions tout simplementarrêter l'activité.

Toutefois, en supposant que tout va bien, nous allons continuer à renseigner la méthode do_activitypuis nous allons récupérer un client Amazon SNS avec le kit Kit SDK AWS pour Ruby et le transmettre ànotre méthode create_topicpour créer la rubrique Amazon SNS.

# Create the topic and get the ARN activity_data[:topic_arn] = create_topic(sns_client)

if activity_data[:topic_arn].nil? return false end

Deux éléments sont à ici à prendre en compte :

Version de l'API 2012-01-2524

Page 31: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de WaitForConfirmationActivity

• Nous utilisons AWS.config.with pour définir la région pour notre client Amazon SNS. Comme nousvoulons envoyer des messages SMS, nous utilisons la région SMS que nous avons déclarée dansutils.rb.

• Nous enregistrons l'ARN de la rubrique dans notre carte activity_data. Ces données seronttransmises à l'activité suivante dans notre flux de travail.

Enfin, cette activité abonne l'utilisateur à la rubrique Amazon SNS; à l'aide des points de terminaisontransmis (e-mail et SMS). L'utilisateur n'est pas obligé de renseigner les deux points de terminaison, maisau moins un.

# Subscribe the user to the topic, using either or both endpoints. [:email, :sms].each do | x | ep = activity_data[x][:endpoint] # don't try to subscribe an empty endpoint if (ep != nil && ep != "") response = sns_client.subscribe( { :topic_arn => activity_data[:topic_arn], :protocol => x.to_s, :endpoint => ep } ) activity_data[x][:subscription_arn] = response[:subscription_arn] end end

AWS::SNS::Client.subscribe utilise la rubrique ARN et le protocole (que nous avons intelligemment déguisésous la forme de clé activity_data pour le point de terminaison correspondant).

Enfin, nous re-compressons ces informations au format YAML pour l'activité suivante, afin de les renvoyerà Amazon SWF.

# if at least one subscription arn is set, consider this a success. if (activity_data[:email][:subscription_arn] != nil) or (activity_data[:sms][:subscription_arn] != nil) @results = activity_data.to_yaml else @results = { :reason => "Couldn't subscribe to SNS topic", :detail => "" }.to_yaml puts(" #{@results.inspect}") return false end return true end end

Nous avons terminé la mise en œuvre de l'activité subscribe_topic_activity. Ensuite, nous allonsdéfinir wait_for_confirmation_activity.

Définition de WaitForConfirmationActivityUne fois qu'un utilisateur est abonné à une rubrique Amazon SNS, il lui reste à confirmer la demanded'abonnement. Dans ce cas, nous allons attendre que l'utilisateur confirme l'abonnement par e-mail ou parSMS.

L'activité qui attend que l'utilisateur confirme l'abonnement s'appellewait_for_confirmation_activity, et nous allons la définir ici. Pour commencer, créez un fichierappelé wait_for_confirmation_activity.rb et configurez-le comme nous l'avons fait dans lesactivités précédentes.

require 'yaml' require_relative 'basic_activity.rb'

# **WaitForConfirmationActivity** waits for the user to confirm the SNS

Version de l'API 2012-01-2525

Page 32: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de WaitForConfirmationActivity

# subscription. When this action has been taken, the activity is complete. It # might also time out... class WaitForConfirmationActivity < BasicActivity

# Initialize the class def initialize super('wait_for_confirmation_activity') end

Ensuite, nous allons commencer par définir la méthode do_activity et nous allons extraire les donnéesd'entrée dans une variable locale appelée subscription_data.

def do_activity(task) if task.input.nil? @results = { :reason => "Didn't receive any input!", :detail => "" }.to_yaml return false end

subscription_data = YAML.load(task.input)

Maintenant que nous avons l'ARN de la rubrique, nous pouvons créer une instance AWS::SNS::Topic et luitransmettre l'ARN pour récupérer cette rubrique.

topic = AWS::SNS::Topic.new(subscription_data[:topic_arn])

if topic.nil? @results = { :reason => "Couldn't get SWF topic ARN", :detail => "Topic ARN: #{topic.arn}" }.to_yaml return false end

Nous allons maintenant vérifier la rubrique afin de déterminer si l'utilisateur a confirmé l'abonnement àl'aide de l'un points de terminaison. Pour que l'activité soit considérée comme ayant réussi, seul un point determinaison doit être confirmé.

Une rubrique Amazon SNS gère une liste des abonnements correspondants. Nous pouvons doncdéterminer si l'utilisateur a confirmé un abonnement particulier ou non en vérifiant si l'ARN de l'abonnementne correspond pas à PendingConfirmation.

# loop until we get some indication that a subscription was confirmed. subscription_confirmed = false while(!subscription_confirmed) topic.subscriptions.each do | sub | if subscription_data[sub.protocol.to_sym][:endpoint] == sub.endpoint # this is one of the endpoints we're interested in. Is it subscribed? if sub.arn != 'PendingConfirmation' subscription_data[sub.protocol.to_sym][:subscription_arn] = sub.arn puts "Topic subscription confirmed for (#{sub.protocol}: #{sub.endpoint})" @results = subscription_data.to_yaml return true else puts "Topic subscription still pending for (#{sub.protocol}: #{sub.endpoint})" end end end

Si nous obtenons un ARN pour l'abonnement, nous l'enregistrerons dans les données de résultat del'activité, les convertirons au format YAML et renverrons la valeur true à partir de do_activity, quiindique que l'activité s'est correctement déroulée.

Version de l'API 2012-01-2526

Page 33: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de SendResultActivity

Dans la mesure où il faut parfois patienter longtemps pour savoir si un abonnement a été confirmé, nousappellerons parfois record_heartbeat au niveau de la tâche d'activité. Ce paramètre indique à AmazonSWF que l'activité est toujours en cours de traitement. Il permet également de savoir où en est l'activité (sivous faites quelque chose, comme le traitement de fichiers, dont vous pouvez déterminer la progression).

task.record_heartbeat!( { :details => "#{topic.num_subscriptions_confirmed} confirmed, #{topic.num_subscriptions_pending} pending" }) # sleep a bit. sleep(4.0) end

Cela termine la boucle while. Si, pour une raison ou une autre, nous sortons de la boucle while sanssuccès, nous indiquerons un échec et mettrons fin à la méthode do_activity.

if (subscription_confirmed == false) @results = { :reason => "No subscriptions could be confirmed", :detail => "#{topic.num_subscriptions_confirmed} confirmed, #{topic.num_subscriptions_pending} pending" }.to_yaml return false end end end

Nous arrivons maintenant au terme de la mise en œuvre de wait_for_confirmation_activity. Il nereste plus qu'une seule activité à définir : send_result_activity.

Définition de SendResultActivitySi le flux de travail a progressé jusque-là, cela signifie que nous avons abonné l'utilisateur à une rubriqueAmazon SNS et qu'il a confirmé l'abonnement.

Notre dernière activité, send_result_activity, envoie à l'utilisateur une confirmation de l'abonnementà la rubrique, à l'aide de la rubrique à laquelle il s'est abonné et du point de terminaison avec lequel il aconfirmé l'abonnement.

Créez un fichier appelé send_result_activity.rb et configurez-le comme nous l'avons fait pourtoutes les autres activités.

require 'yaml' require_relative 'basic_activity.rb'

# **SendResultActivity** sends the result of the activity to the screen, and, if # the user successfully registered using SNS, to the user using the SNS contact # information collected. class SendResultActivity < BasicActivity

def initialize super('send_result_activity') end

La méthode do_activity commence également de la même manière : elle récupère les donnéesd'entrée à partir du le flux de travail, les convertit au format YAM, puis utilise l'ARN de la rubrique pourcréer une instance AWS::SNS::Topic.

def do_activity(task) if task.input.nil? @results = { :reason => "Didn't receive any input!", :detail => "" } return false

Version de l'API 2012-01-2527

Page 34: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurÉtapes suivantes

end

input = YAML.load(task.input)

# get the topic, so we publish a message to it. topic = AWS::SNS::Topic.new(input[:topic_arn])

if topic.nil? @results = { :reason => "Couldn't get SWF topic", :detail => "Topic ARN: #{topic.arn}" } return false end

Une fois que nous aurons la rubrique, nous allons y publier un message (et le reproduire à l'écran).

@results = "Thanks, you've successfully confirmed registration, and your workflow is complete!"

# send the message via SNS, and also print it on the screen. topic.publish(@results) puts(@results)

return true end end

Toute publication dans une rubrique Amazon SNS envoie le message que vous fournissez à tous les pointsde terminaison souscrits et confirmés qui existent pour cette rubrique. Donc, si l'utilisateur a confirmél'abonnement avec à la fois un e-mail et un numéro de SMS, il reçoit deux messages de confirmation, un àchaque point de terminaison.

Étapes suivantesNous avons terminé la mise en œuvre de l'activité send_result_activity. A présent, vous allez reliertoutes ces activités dans une application d'activité qui gère les tâches d'activité et qui peut lancer lesactivités en réponse, comme décrit dans la section Quatrième partie du didacticiel sur le flux de travaild'abonnement : mise en œuvre de l'observateur de tâches d'activité (p. 28).

Quatrième partie du didacticiel sur le flux de travaild'abonnement : mise en œuvre de l'observateur detâches d'activité

Dans Amazon SWF, les tâches d'activité d'une exécution de flux de travail en cours s'affichent dans la listedes tâches d'activité fournie lorsque vous planifiez une activité dans le flux de travail.

Nous allons mettre en œuvre un observateur d'activité de base pour gérer ces tâches pour notre flux detravail et l'utiliser pour lancer nos activités quand Amazon SWF ajoute une tâche dans la liste des tâchesd'activité afin de démarrer l'activité.

Pour commencer, créez un fichier nommé swf_sns_activities.rb. Nous allons l'utiliser pour effectuerles actions suivantes :

• Instancier les classes d'activité que nous avons créées• Enregistrer chaque activité via Amazon SWF.

Version de l'API 2012-01-2528

Page 35: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurQuatrième partie : mise en œuvre

de l'observateur de tâches d'activité

• Rechercher les activités et appeler do_activity pour chacune d'elles lorsque son nom apparaît dansla liste des tâches d'activité

Dans le fichier swf_sns_activities.rb, ajoutez les instructions suivantes afin de demander chacunedes classes d'activité que nous avons définies.

require_relative 'get_contact_activity.rb'require_relative 'subscribe_topic_activity.rb'require_relative 'wait_for_confirmation_activity.rb'require_relative 'send_result_activity.rb'

Nous allons maintenant créer la classe et fournir un code d'initialisation.

class ActivitiesPoller

def initialize(domain, workflowId) @domain = domain @workflowId = workflowId @activities = {}

# These are the activities we'll run activity_list = [ GetContactActivity, SubscribeTopicActivity, WaitForConfirmationActivity, SendResultActivity ]

activity_list.each do | activity_class | activity_obj = activity_class.new puts "** initialized and registered activity: #{activity_obj.name}" # add it to the hash @activities[activity_obj.name.to_sym] = activity_obj end end

En plus d'enregistrer le domaine et la liste de tâches, ce code instancie chacune des classes d'activitéque nous avons créées. Comme chaque classe enregistre son activité associée (reportez-vous au fichierbasic_activity.rb si vous souhaitez vérifier ce code), cela suffit pour qu'Amazon SWF connaissetoutes les activités que nous allons exécuter.

Nous stockons chaque activité instanciée dans une carte en utilisant le nom de l'activité (par exemple,get_contact_activity) comme clé. Cela nous permettra de rechercher les activités facilement dans lecode de l'observateur d'activité, que nous allons définir ensuite.

Créez une méthode dénommée poll_for_activities et appelez poll au niveau des tâches d'activitédétenues par le domaine afin de les récupérer.

def poll_for_activities @domain.activity_tasks.poll(@workflowId) do | task | activity_name = task.activity_type.name

Nous pouvons obtenir le nom de l'activité à partir du membre activity_type de la tâche. Ensuite, nousallons utiliser le nom d'activité associé à cette tâche pour rechercher la classe dans laquelle exécuterdo_activity, en le transmettant à la tâche (qui inclut toutes les données d'entrée qui doivent êtretransférées à l'activité).

# find the task on the activities list, and run it. if @activities.key?(activity_name.to_sym) activity = @activities[activity_name.to_sym] puts "** Starting activity task: #{activity_name}"

Version de l'API 2012-01-2529

Page 36: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRunning the Workflow

if activity.do_activity(task) puts "++ Activity task completed: #{activity_name}" task.complete!({ :result => activity.results }) # if this is the final activity, stop polling. if activity_name == 'send_result_activity' return true end else puts "-- Activity task failed: #{activity_name}" task.fail!( { :reason => activity.results[:reason], :details => activity.results[:detail] } ) end else puts "couldn't find key in @activities list: #{activity_name}" puts "contents: #{@activities.keys}" end end endend

Le code seulement attend que do_activity termine, puis appelle soit terminée ! soit échouer ! sur latâche en fonction du code de retour.

Note

Ce code sort de l'observateur une fois que l'activité finale a été lancée, dans la mesure oùl'observateur a rempli sa mission et a lancé toutes les activités. Dans votre propre code AmazonSWF, si vos activités sont susceptibles d'être lancées à nouveau, il peut être utile d'exécuterl'observateur d'activité indéfiniment.

Nous arrivons à la fin du code de la classe ActivitiesPoller, mais nous allons ajouter un peu de codesupplémentaire à la fin du fichier pour permettre à l'utilisateur de l'exécuter à partir de la ligne decommande.

if __FILE__ == $0 if ARGV.count < 1 puts "You must supply a task-list name to use!" exit end poller = ActivitiesPoller.new(init_domain, ARGV[0]) poller.poll_for_activities puts "All done!"end

Si l'utilisateur exécute le fichier à partir de la ligne de commande (en lui transmettant une liste de tâchesactivité comme premier argument), ce code instanciera la classe de l'observateur et lancera la recherched'activités. Une fois que l'observateur a terminé (après avoir lancé l'activité finale), il nous suffit d'imprimerun message et de sortir.

Voilà ce qui marque la fin de l'observateur d'activité. Il ne vous reste plus qu'à exécuter le code et àvoir comment il fonctionne, comme décrit dans la section Subscription Workflow Tutorial: Running theWorkflow (p. 30).

Subscription Workflow Tutorial: Running theWorkflow

Maintenant que vous avez terminé la mise en œuvre du flux de travail, des activités et des observateurs deflux de travail et d'activités, vous êtes prêt à exécuter le flux de travail.

Version de l'API 2012-01-2530

Page 37: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRunning the Workflow

Si cela n'est pas déjà fait, vous devez fournir vos clés d'accès AWS dans le fichier aws-config.txt,comme dans la section Configuration de la session AWS (p. 11) de la première partie du didacticiel.

A présent, accédez à votre ligne de commande et activez le répertoire dans lequel se trouvent les fichierssources du didacticiel. Les fichiers suivants devraient s'y trouver :

.|-- aws-config.txt|-- basic_activity.rb|-- get_contact_activity.rb|-- send_result_activity.rb|-- subscribe_topic_activity.rb|-- swf_sns_activities.rb|-- swf_sns_workflow.rb|-- utils.rb`-- wait_for_confirmation_activity.rb

Désormais, démarrez le flux de travail avec la commande suivante.

ruby swf_sns_workflow.rb

Cette opération lance le flux de travail et devrait imprimer un message avec une ligne que vous pouvezcopier et coller dans une nouvelle fenêtre de ligne de commande (voire sur un autre ordinateur, si vous yavez copié les fichiers sources du didacticiel).

Amazon SWF Example------------------

Start the activity worker, preferably in a separate command-line window, withthe following command:

> ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities

You can copy & paste it if you like, just don't copy the '>' character.

Press return when you're ready...

Le code du flux de travail attend patiemment que vous démarriez l'observateur d'activités dans une fenêtreséparée.

Ouvrez une nouvelle fenêtre de ligne de commande, activez à nouveau le répertoire dans lequel lesfichiers sources se trouvent, puis utilisez la commande fournie par le fichier swf_sns_workflow.rb pourdémarrer l'observateur d'activités. Par exemple, si vous avez reçu le résultat précédent, vous tapez (oucollez) ce qui suit.

ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities

Une fois que vous commencez à exécuter l'observateur d'activités, il se met à générer des informations surl'enregistrement des activités.

** initialized and registered activity: get_contact_activity** initialized and registered activity: subscribe_topic_activity** initialized and registered activity: wait_for_confirmation_activity** initialized and registered activity: send_result_activity

Vous pouvez maintenant revenir à la fenêtre de ligne de commande d'origine et appuyer sur Entrée pourlancer l'exécution du flux de travail. Cette action enregistre le flux de travail et planifie la première activité.

Version de l'API 2012-01-2531

Page 38: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRunning the Workflow

Starting workflow execution.** registered workflow: swf-sns-workflow** scheduling activity task: get_contact_activity

Retournez dans la fenêtre où l'observateur d'activités est exécuté. Le résultat de la première activité qui encours d'exécution s'affiche, avec une invite vous permettant de saisir votre adresse e-mail ou le numéro detéléphone SMS. Renseignez l'une de ces informations ou les deux, puis confirmez-les.

activity task received: <AWS::SimpleWorkflow::ActivityTask>** Starting activity task: get_contact_activity

Please enter either an email address or SMS message (mobile phone) number toreceive Amazon SNS notifications. You can also enter both to use both address types.

If you enter a phone number, it must be able to receive SMS messages, and mustbe 11 digits (such as 12065550101 to represent the number 1-206-555-0101).

Email: [email protected]: 12065550101

You entered: email: [email protected] phone: 12065550101

Is this correct? (y/n): y

Note

Le numéro de téléphone fourni ici est fictif. Il est utilisé uniquement à des fins d'illustration.Indiquez votre propre numéro de téléphone et votre adresse e-mail.

Peu de temps après la saisie de ces informations, vous devriez recevoir un e-mail ou un SMS d'AmazonSNS vous demandant de confirmer l'abonnement à la rubrique. Si vous avez saisi un numéro de SMS, cequi apparaît sur votre téléphone ressemble à ceci.

Si vous répondez à ce message par YES, vous obtiendrez la réponse que nous avons fournie danssend_result_activity.

Version de l'API 2012-01-2532

Page 39: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRunning the Workflow

Avez-vous vu ce qui s'est passé dans la fenêtre de ligne de commande pendant ce temps ? L'observateurde flux de travail et l'observateur d'activités étaient affairés.

Voici le résultat de l'observateur de flux de travail.

** scheduling activity task: subscribe_topic_activity** scheduling activity task: wait_for_confirmation_activity** scheduling activity task: send_result_activity!! All activities complete! Sending complete_workflow_execution...

Voici le résultat de l'observateur d'activités, qui a été généré en même temps dans une autre fenêtre deligne de commande.

++ Activity task completed: get_contact_activity** Starting activity task: subscribe_topic_activity++ Activity task completed: subscribe_topic_activity** Starting activity task: wait_for_confirmation_activityTopic subscription still pending for (email: [email protected])Topic subscription confirmed for (sms: 12065550101)++ Activity task completed: wait_for_confirmation_activity** Starting activity task: send_result_activityThanks, you've successfully confirmed registration, and your workflow is complete!++ Activity task completed: send_result_activityAll done!

Félicitations, votre flux de travail est terminé, ce qui marque également la fin de ce didacticiel !

Vous souhaiterez peut-être exécuter le flux de travail à nouveau pour voir comment les délais fonctionnentou pour saisir des données différentes. Rappelez-vous qu’une fois que vous êtes abonné à un sujet, you'restill subscribed until you unsubscribe. La réexécution du flux de travail avant la désinscription des sujetsentraînera probablement la réussite automatique, puisque wait_for_confirmation_activity verrontque votre abonnement est déjà confirmé.

To unsubscribe from the Amazon SNS topic

• Respond in the negative (send STOP) to the text message.• Choose the unsubscribe link that you received in your email.

Vous pouvez maintenant vous ré-abonner à la rubrique.

Version de l'API 2012-01-2533

Page 40: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurWhere Do I Go from Here?

Where Do I Go from Here?Ce didacticiel couvre de nombreux aspects, mais il y a encore beaucoup à apprendre concernant le kitKit SDK AWS pour Ruby, Amazon SWF ou Amazon SNS. Pour consulter plus d'informations, ainsi qued'autres exemples, reportez-vous à la documentation officielle de chaque produit :

• Kit SDK AWS pour Ruby Documentation• Amazon Simple Notification Service Documentation• Amazon Simple Workflow Service Documentation

Version de l'API 2012-01-2534

Page 41: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurInscription d'un domaine

DidacticielsLa console Amazon Simple Workflow Service (Amazon SWF) fournit un autre moyen de configurer, d'initieret de gérer les exécutions de flux de travail.

La console Amazon SWF vous permet d'effectuer les actions ci-dessous :

• Enregistrement des domaines de flux de travail• Enregistrement des types de flux de travail• Enregistrement des types d'activité• Lancement des exécutions de flux de travail• Affichage des informations sur les tâches en attente• Affichage des exécutions de flux de travail en cours d'exécution• Annulation, arrêt et envoi des signaux aux exécutions de flux de travail en cours• Redémarrage des exécutions de flux de travail fermées

La console Amazon SWF fait partie de l'environnement de la console AWS, à laquelle vous pouvezaccéder en vous connectant à l'adresse https://aws.amazon.com/. Le lien de connexion se trouve dansl'angle supérieur droit de la page.

Rubriques• Inscription d'un domaine Amazon SWF (p. 35)• Enregistrement d'un type de flux de travail (p. 36)• Enregistrement d'un type d'activité (p. 38)• Lancement d'une exécution de flux de travail (p. 39)• Affichage des tâches en attente (p. 41)• Gestion des exécutions de flux de travail (p. 41)

Inscription d'un domaine Amazon SWFTant qu'aucun domaine n'a été enregistré, l'enregistrement de domaine est la seule fonctionnalitédisponible à partir de la console.

Pour inscrire un domaine Amazon SWF via la console

1. Si aucun domaine n'a été enregistré, choisissez Register a New Domain au centre du volet principal.

Si au moins un domaine est enregistré, dans la vue du tableau de bord, choisissez le bouton ManageDomains, puis dans la boîte de dialogue Manage Domains, choisissez Register New.

2. Dans la boîte de dialogue Register Domain, saisissez un nom, une période de conservationet une description. Ces valeurs correspondent aux paramètres de même nom dans l'actionRegisterDomain.

Version de l'API 2012-01-2535

Page 42: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnregistrement d'un type de flux de travail

3. Choisissez Register.4. Une fois que le domaine est enregistré, la console affiche la boîte de dialogue Manage Domains.

Enregistrement d'un type de flux de travailVous pouvez enregistrer les types de flux de travail à l'aide de la console Amazon Simple Workflow.Toutefois, vous devez au préalable enregistrer au moins un domaine.

Pour enregistrer un type de flux de travail Amazon SWF via la console

1. Dans le Amazon Simple Workflow Service Tableau de bord, sous Quick Links, choisissez RegisterNew Workflow Type.

Dans la boîte de dialogue Workflow Details, saisissez les informations suivantes.

• Domaine• Nom du flux de travail• Version du flux de travail• Default Task List• Default Execution Run Time• Default Task Run Time

Les champs marqués d'un astérisque (*) sont obligatoires.

Version de l'API 2012-01-2536

Page 43: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnregistrement d'un type de flux de travail

Choisissez Continue.2. Dans la boîte de dialogue Additional Options, saisissez une description et spécifiez une stratégie

enfant par défaut. Sélectionnez Review.

3. Dans la boîte de dialogue Review, vérifiez les informations que vous avez saisies dans les boîtesde dialogue précédentes. Si les informations sont correctes, choisissez Register Workflow. Sinon,choisissez Back pour modifier les informations.

Version de l'API 2012-01-2537

Page 44: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnregistrement d'un type d'activité

Enregistrement d'un type d'activitéVous pouvez enregistrer les types d'activité à l'aide de la console Amazon Simple Workflow Service.Toutefois, vous devez au préalable enregistrer au moins un domaine.

Pour enregistrer un type d'activité Amazon SWF via la console

1. Dans le Amazon Simple Workflow Service Tableau de bord, sous Quick Links, choisissez RegisterNew Activity Type.

Dans la boîte de dialogue Activity Details, saisissez les informations suivantes.

• Domain• Activity Name• Activity Version• Default Task List• Task Schedule to Start Timeout• Task Start to Close Timeout

Les champs marqués d'un astérisque (*) sont obligatoires.

Choisissez Continue.2. Dans la boîte de dialogue Additional Options, saisissez une description et spécifiez un délai de

pulsation et un délai entre la planification et la fermeture de tâche. Sélectionnez Review.

3. Dans la boîte de dialogue Review, vérifiez les informations que vous avez saisies dans les boîtesde dialogue précédentes. Si les informations sont correctes, choisissez Register Activity. Sinon,choisissez Back pour modifier les informations.

Version de l'API 2012-01-2538

Page 45: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLancement d'une exécution de flux de travail

Lancement d'une exécution de flux de travailVous pouvez lancer une exécution du flux de travail à partir de la console Amazon Simple WorkflowService. Toutefois, vous ne pouvez pas lancer une exécution de flux de travail tant que vous n'avez pasenregistré au moins un type de flux de travail.

Pour lancer une exécution de flux de travail à l'aide dela console1. Dans le Amazon Simple Workflow Service Tableau de bord, sous Quick Links, choisissez Start a New

Workflow Execution.

Dans la boîte de dialogue Execution Details, saisissez les informations suivantes.

• Domaine• Nom du flux de travail• Version du flux de travail• ID de flux de travail• Task List• Maximum Execution Run Time• Task Start to Close Timeout

Les champs marqués d'un astérisque (*) sont obligatoires.

Version de l'API 2012-01-2539

Page 46: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurPour lancer une exécution de flux

de travail à l'aide de la console

Choisissez Continue.2. Dans la boîte de dialogue Additional Options, spécifiez les éléments suivants :

• Un ensemble de balises à associer à l'exécution de flux de travail. Vous pourrez utiliser ces balisespour rechercher des informations sur vos exécutions de flux de travail.

• Une chaîne d'entrée pertinente pour l'exécution. Cette chaîne n'est pas interprétée par AmazonSWF.

• Une stratégie enfant.

3. Dans la boîte de dialogue Review, vérifiez les informations que vous avez saisies dans les boîtes dedialogue précédentes. Si les informations sont correctes, choisissez Start Execution. Sinon, choisissezBack pour modifier les informations.

Version de l'API 2012-01-2540

Page 47: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAffichage des tâches en attente

Affichage des tâches en attenteDans le Tableau de bord Amazon Simple Workflow Service, vous pouvez afficher le nombre de tâches enattente associées à une liste de tâches spécifique.

1. Déterminez si vous souhaitez une liste de tâches de décision ou une liste de tâches d'activité.2. Saisissez le nom de la liste de tâches dans la zone de texte.3. Choisissez View Backlog.

Gestion des exécutions de flux de travailLa vue My Workflow Executions de la console Amazon SWF offre des fonctionnalités vous permettant degérer vos exécutions de flux de travail en cours, ainsi que celles qui sont fermées. Pour accéder à cettevue, choisissez le bouton Find Execution(s) du Tableau de bord Amazon SWF.

Si vous saisissez tout d'abord un ID de flux de travail, la console affiche les exécutions correspondantes.Sinon, si vous choisissez Find Execution(s), la vue My Workflow Executions vous permet de rechercherdes exécutions de flux de travail en fonction du moment où elles ont été lancées, de leur état (en coursd'exécution ou non) et des métadonnées associées. Voici les types de métadonnée que vous pouvezsélectionner pour une recherche donnée :

• ID de flux de travail

Version de l'API 2012-01-2541

Page 48: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurGestion des exécutions de flux de travail

• Type de flux de travail• Balises• Statut de fermeture

Si l'exécution de flux de travail est fermée, le statut de fermeture indique l'une des valeurs suivantes, quidécrit les circonstances dans lesquelles la fermeture a eu lieu :

• Terminé• Échec• Annulé• Expirée• Traité comme nouveau

Note

Pour pouvoir énumérer les exécutions de flux de travail, vous devez sélectionner un domaine dansla liste déroulante Domain.

Après avoir énuméré une liste des exécutions de flux de travail, vous pouvez effectuer les opérationssuivantes.

• Signalez une exécution de flux de travail—c'est-à-dire envoyer des données supplémentaires à uneexécution de flux de travail en cours.

Version de l'API 2012-01-2542

Page 49: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurGestion des exécutions de flux de travail

• Essayez d'annuler une exécution de flux de travail. Il est préférable d'annuler une exécution de flux detravail plutôt que de la résilier. L'annulation permet à l'exécution de flux de travail d'effectuer des tâchesde nettoyage, puis de se fermer correctement.

• Résiliez une exécution de flux de travail. Notez qu'il est préférable d'annuler une exécution de flux detravail plutôt que de la résilier.

• Ré-exécutez une exécution de flux de travail fermée.

Version de l'API 2012-01-2543

Page 50: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurGestion des exécutions de flux de travail

Pour ré-exécuter une exécution de flux de travail

1. Dans la liste des exécutions de flux de travail, sélectionnez celle que vous souhaitez ré-exécuter.Lorsque vous sélectionnez une exécution fermée, le bouton Re-Run devient disponible. ChoisissezRe-Run.

La séquence de boîtes de dialogue Re-Run Execution s'affiche.2. Dans la boîte de dialogue Execution Details, spécifiez les informations suivantes. Cette boîte de

dialogue possède les informations que vous avez déjà remplies pour l'exécution d'origine.

• Domaine• Nom du flux de travail• Version du flux de travail• ID de flux de travail

En choisissant le lien Advanced Options, vous spécifiez les options supplémentaires suivantes.

• Task List• Maximum Execution Run Time• Task Start to Close Timeout

Choisissez Continue3. Dans la boîte de dialogue Additional Options, spécifiez une chaîne d'entrée pour l'exécution. En

choisissant le lien Advanced Options, vous définissez les balises (Tags) à associer à ce cycle ou àl'exécution de flux de travail, ainsi que pour modifier sa stratégie enfant (Child Policy). Comme dans laboîte de dialogue précédente, les informations de l'exécution d'origine sont déjà renseignées.

Sélectionnez Review.4. Dans la boîte de dialogue Review, vérifiez que toutes les informations sont correctes. Si les

informations sont correctes, choisissez Re-Run Execution. Sinon, choisissez Back pour modifier lesinformations.

Version de l'API 2012-01-2544

Page 51: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurFlux de travail

Fonctionnement de Amazon SWFLes concepts présentés dans ce chapitre donnent une vue d'ensemble d'Amazon Simple Workflow Serviceet en décrivent les principales fonctionnalités. Bien que certains exemples de l'utilisation d'Amazon SWFsoient fournis dans les rubriques de ce chapitre, reportez-vous à la section Working with Amazon SWFAPIs (p. 105) pour obtenir des exemples plus concrets concernant la mise en œuvre des fonctionnalitésdécrites ici.

Rubriques• Flux de travail Amazon SWF (p. 45)• Historique du flux de travail Amazon SWF (p. 47)• Acteurs Amazon SWF (p. 50)• Tâches Amazon SWF (p. 53)• Domaines Amazon SWF (p. 53)• Identificateurs d'objet Amazon SWF (p. 54)• Listes de tâches Amazon SWF (p. 54)• Fermeture d'une exécution de flux de travail Amazon SWF (p. 55)• Cycle de vie d'une exécution de flux de travail Amazon SWF (p. 56)• Interrogation de tâches dans Amazon SWF (p. 60)• Concepts avancés d'Amazon SWF (p. 61)

Flux de travail Amazon SWFRubriques

• Qu'est-ce qu'un flux de travail ? (p. 45)• Exemple de flux de travail simple : application de commerce électronique (p. 45)• Exécution et enregistrement de flux de travail (p. 46)• Voir aussi (p. 47)

Qu'est-ce qu'un flux de travail ?Avec Amazon Simple Workflow ServiceAmazon SWF, vous pouvez mettre en œuvre des applicationsdistribuées asynchrones en tant que flux de travail. Les flux de travail permettent de coordonner et degérer l'exécution des activités qui peuvent être exécutées de façon asynchrone sur plusieurs équipementsinformatiques et qui peuvent comporter à la fois le traitement séquentiel et parallèle.

Lorsque vous créez un flux de travail, vous analysez votre application pour identifier son composant tâches.Dans Amazon SWF, ces tâches sont représentées par les activités. L'ordre dans lequel les activités sontexécutées est déterminé par la logique de coordination du flux de travail.

Exemple de flux de travail simple : application decommerce électroniquePar exemple, la figure suivante illustre un flux de travail simple de traitement des commandes pour uncommerce en ligne, qui implique à la fois des processus automatisés et manuels.

Version de l'API 2012-01-2545

Page 52: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurExécution et enregistrement de flux de travail

Ce flux de travail démarre lorsqu'un client passe une commande. Il comprend quatre tâches :

1. Vérifier la commande2. Si la commande est valide, facturer le client3. Si le paiement est effectué, expédier la commande4. Si la commande est livrée, enregistrer les détails de cette dernière

Les tâches de ce flux de travail sont séquentielles : la commande doit être confirmée avant de pouvoirfacturer la carte de crédit ; la carte de crédit doit être débitée avant de pouvoir livrer la commande ; et lacommande doit être livrée avant de pouvoir être enregistrée. Pour autant, comme Amazon SWF prenden charge les processus distribués, ces tâches peuvent être effectuées dans des endroits différents. Siles tâches doivent être programmées, elles peuvent également être écrites dans différents langages deprogrammation ou à l'aide de différents outils.

En plus du traitement séquentiel des tâches, Amazon SWF prend également en charge les flux de travailavec le traitement des tâches en parallèle. Les tâches parallèles sont effectuées en même temps etpeuvent être accomplies indépendamment par différentes applications ou personnes. Le flux de travailprend des décisions sur la procédure à suivre à une fois qu'une ou plusieurs tâches parallèles ont ététerminées.

Exécution et enregistrement de flux de travailUne fois que la logique de coordination et les activités ont été conçues, vous enregistrez ces composantsen tant que types de flux de travail et d'activités via Amazon SWF. Lors de l'enregistrement, vous spécifiezpour chaque type un nom, une version et certaines valeurs de configuration par défaut.

Seuls les types de flux de travail et d'activités enregistrés peuvent être utilisés avec Amazon SWF. Dansl'exemple de commerce en ligne, vous devriez enregistrer le type de flux de travail CustomerOrder et lestypes d'activités VerifyOrder, ChargeCreditCard, ShipOrder et RecordCompletion.

Après avoir enregistré votre type de flux de travail, vous pouvez l'exécuter aussi souvent que vous levoulez. Une exécution de flux de travail est une instance en cours d'exécution d'un flux de travail. Dansl'exemple de commerce en ligne, une nouvelle exécution de flux de travail se lance à chaque commandeclient.

Une exécution de flux de travail peut être lancée par n'importe quel processus ou n'importe quelleapplication, même par une autre exécution de flux de travail. Dans l'exemple du commerce en ligne, le typed'application qui initie le flux de travail dépend de la façon dont le client passe commande. Le flux de travailpeut être initié par un site Web, une application mobile ou un représentant du service client utilisant uneapplication d'entreprise interne.

Version de l'API 2012-01-2546

Page 53: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurVoir aussi

Avec Amazon SWF, vous pouvez associer un identifiant—appelé workflowId—avec vos exécutionsde flux de travail. Vous pouvez donc intégrer vos identifiants existants dans votre flux de travail. Dansl'exemple du commerce en ligne, l'exécution de chaque flux de travail peut être identifiée à l'aide dunuméro de facture du client.

En plus de l'identificateur que vous fournissez, Amazon SWF associe un identifiant unique généré par lesystème—unrunId— à chaque exécution de workflow. Amazon SWF permet à une seule exécution deflux de travail avec cet identifiant à s'exécuter à un moment donné ; même si vous pouvez avoir plusieursexécutions de flux de travail le même type de flux de travail, chaque exécution de flux de travail a un runIddistinct.

Voir aussiHistorique du flux de travail Amazon SWF (p. 47)

Historique du flux de travail Amazon SWFLa progression de toutes les exécutions de flux de travail est enregistrée dans leur historique, qu'AmazonSWF gère. L'historique du flux de travail est un enregistrement détaillé, complet et cohérent de tous lesévénements qui ont eu lieu depuis le lancement de l'exécution du flux de travail. Un événement représenteune modification distincte de l'état d'exécution de votre flux de travail, telle que la planification d'unenouvelle activité ou la finalisation d'une activité en cours. L'historique du flux de travail contient tous lesévénements qui entraînent la modification de l'état de l'exécution du flux de travail, telle que les activitésplanifiées et terminées, l'expiration des tâches et les signaux.

Généralement, les opérations qui ne modifient pas l'état de l'exécution du flux de travail n'apparaissent pasdans l'historique de ce dernier. Par exemple, l'historique du flux de travail ne montre pas les tentatives derecherche de tâches ni l'utilisation des opérations de visibilité.

L'historique du flux de travail présente plusieurs avantages clés :

• Il permet aux applications d'être sans état, car toutes les informations relatives à une exécution du flux detravail sont stockées dans l'historique correspondant.

• Pour chaque exécution de flux de travail, l'historique fournit un enregistrement des activités qui ont étéplanifiées, de leur état actuel et de leurs résultats. L'exécution du flux de travail utilise ces informationspour déterminer les étapes suivantes.

• L'historique fournit une piste d'audit détaillée que vous pouvez utiliser pour surveiller les exécutions deflux de travail en cours et pour vérifier les exécutions de flux de travail terminées.

Voici une vue conceptuelle de l'historique de flux de travail du commerce en ligne :

Invoice0001

Start Workflow Execution

Schedule Verify OrderStart Verify Order ActivityComplete Verify Order Activity

Schedule Charge Credit CardStart Charge Credit Card ActivityComplete Charge Credit Card Activity

Schedule Ship Order

Version de l'API 2012-01-2547

Page 54: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurHistorique du flux de travail

Start Ship Order Activity

Dans l'exemple précédent, la commande est en attente d'envoi. Dans l'exemple suivant, la commande estterminée. Comme l'historique du flux de travail est cumulé, les événements les plus récents s'ajoutent :

Invoice0001

Start Workflow Execution

Schedule Verify OrderStart Verify Order ActivityComplete Verify Order Activity

Schedule Charge Credit CardStart Charge Credit Card ActivityComplete Charge Credit Card Activity

Schedule Ship OrderStart Ship Order Activity

Complete Ship Order Activity

Schedule Record Order CompletionStart Record Order Completion ActivityComplete Record Order Completion Activity

Close Workflow

Par programmation, les événements de l'historique d'exécution du flux de travail sont représentées en tantqu'objets JavaScript Object Notation (JSON). L'historique lui-même est un tableau JSON de ces objets.Chaque événement comporte les éléments suivants :

• Un type, tel que WorkflowExecutionStarted ou ActivityTaskCompleted• Un horodatage au format horaire Unix• Un ID qui identifie l'événement de manière unique

En outre, chaque type d'événement inclut un ensemble distinct d'attributs descriptifs qui lui sontspécifiques. Par exemple, l'événement ActivityTaskCompleted comporte les attributs qui contiennentles ID des événements qui correspondent au moment où la tâche d'activité a été planifiée et au moment oùelle a été lancée, ainsi qu'un attribut qui stocke les données de résultat.

Vous pouvez obtenir une copie de l'état actuel de l'historique d'exécution du flux de travail via l'actionGetWorkflowExecutionHistory. En outre, dans le cadre de l'interaction entre Amazon SWF et le décideur devotre flux de travail, le décideur reçoit régulièrement une copie de l'historique.

Voici un extrait d'historique d'exécution du flux de travail au format JSON.

[ { "eventId": 11, "eventTimestamp": 1326671603.102, "eventType": "WorkflowExecutionTimedOut", "workflowExecutionTimedOutEventAttributes": { "childPolicy": "TERMINATE", "timeoutType": "START_TO_CLOSE" } }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": {

Version de l'API 2012-01-2548

Page 55: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurHistorique du flux de travail

"name": "specialTaskList" } }, "eventId": 10, "eventTimestamp": 1326670566.124, "eventType": "DecisionTaskScheduled" }, { "activityTaskTimedOutEventAttributes": { "details": "Waiting for confirmation", "scheduledEventId": 8, "startedEventId": 0, "timeoutType": "SCHEDULE_TO_START" }, "eventId": 9, "eventTimestamp": 1326670566.124, "eventType": "ActivityTaskTimedOut" }, { "activityTaskScheduledEventAttributes": { "activityId": "verification-27", "activityType": { "name": "activityVerify", "version": "1.0" }, "control": "digital music", "decisionTaskCompletedEventId": 7, "heartbeatTimeout": "120", "input": "5634-0056-4367-0923,12/12,437", "scheduleToCloseTimeout": "900", "scheduleToStartTimeout": "300", "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 8, "eventTimestamp": 1326670266.115, "eventType": "ActivityTaskScheduled" }, { "decisionTaskCompletedEventAttributes": { "executionContext": "Black Friday", "scheduledEventId": 5, "startedEventId": 6 }, "eventId": 7, "eventTimestamp": 1326670266.103, "eventType": "DecisionTaskCompleted" }, { "decisionTaskStartedEventAttributes": { "identity": "Decider01", "scheduledEventId": 5 }, "eventId": 6, "eventTimestamp": 1326670161.497, "eventType": "DecisionTaskStarted" }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 5, "eventTimestamp": 1326668752.66, "eventType": "DecisionTaskScheduled" }, { "decisionTaskTimedOutEventAttributes": {

Version de l'API 2012-01-2549

Page 56: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurActeurs

"scheduledEventId": 2, "startedEventId": 3, "timeoutType": "START_TO_CLOSE" }, "eventId": 4, "eventTimestamp": 1326668752.66, "eventType": "DecisionTaskTimedOut" }, { "decisionTaskStartedEventAttributes": { "identity": "Decider01", "scheduledEventId": 2 }, "eventId": 3, "eventTimestamp": 1326668152.648, "eventType": "DecisionTaskStarted" }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 2, "eventTimestamp": 1326668003.094, "eventType": "DecisionTaskScheduled" }]

Pour obtenir une liste détaillée des différents types d'événements qui peuvent apparaître dans l'historiqued'exécution du flux de travail, consultez le type de données HistoryEvent dans Amazon Simple WorkflowService API Reference

Amazon SWF stocke l'historique complet de toutes les exécutions de flux de travail pendant un nombreconfigurable de jours après la fermeture de l'exécution. Cette période, qui est appelée la période deconservation de l'historique du flux de travail, est spécifiée lorsque vous enregistrez un domaine pour votreflux de travail. Nous aborderons les domaines plus en détail ultérieurement dans cette section.

Acteurs Amazon SWFRubriques

• Qu'est-ce qu'un acteur dans Amazon SWF ? (p. 50)• Démarreurs de flux de travail (p. 51)• Décideurs (p. 51)• Outils de traitement d'activité (p. 52)• Echange de données entre les acteurs (p. 52)

Qu'est-ce qu'un acteur dans Amazon SWF ?Dans le cadre de ses opérations, Amazon SWF interagit avec différents types d'acteurs de programmation.Il peut s'agir de démarreurs de flux de travail (p. 51), de décideurs (p. 51) ou d'outils de traitementd'activité (p. 52). Ces acteurs communiquent avec Amazon SWF au travers de son API. Vous pouvezdévelopper ces acteurs dans n'importe quel langage de programmation.

Le schéma suivant illustre l'architecture d'Amazon SWF, Amazon SWF et ses acteurs inclus.

Version de l'API 2012-01-2550

Page 57: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDémarreurs de flux de travail

Démarreurs de flux de travailUn démarreur de flux de travail est une application qui permettre d'initier des exécutions de flux de travail.Dans l'exemple de commerce en ligne, il peut s'agir du site Web sur lequel le client passe une commande.Un autre démarreur de flux de travail peut être une application mobile ou un système utilisé par le serviceclient pour passer commande au nom du client.

DécideursUn décideur est l'implémentation de la logique de coordination d'un flux de travail. Les décideurs contrôlentle flux des tâches d'activité d'une exécution de flux de travail. Dès qu'un changement se produit pendantune exécution de flux de travail, tel que l'achèvement d'une tâche, une tâche de décision qui contient latotalité de l'historique de flux de travail est transmise à un décideur. Lorsque le décideur reçoit la tâche dedécision depuis Amazon SWF, il analyse l'historique d'exécution du flux de travail pour en déterminer lesétapes ultérieures. Il renvoie ensuite ces étapes à Amazon SWF sous la forme de décisions. Une décisionest un type de données Amazon SWF qui peut représenter diverses actions à venir. Pour obtenir la listedes décisions possibles, accédez à la section Décision dans le Amazon Simple Workflow Service APIReference.

Voici un exemple de décision au format JSON (format auquel elle est transmise à Amazon SWF). Cettedécision planifie une nouvelle tâche d'activité.

{ "decisionType" : "ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes" : { "activityType" : { "name" : "activityVerify", "version" : "1.0" }, "activityId" : "verification-27", "control" : "digital music", "input" : "5634-0056-4367-0923,12/12,437", "scheduleToCloseTimeout" : "900", "taskList" : { "name": "specialTaskList" }, "scheduleToStartTimeout" : "300", "startToCloseTimeout" : "600",

Version de l'API 2012-01-2551

Page 58: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurOutils de traitement d'activité

"heartbeatTimeout" : "120" }}

Un décideur reçoit une tâche de décision lorsque l'exécution du flux de travail commence et qu'elle changed'état. Les décideurs continuent à faire avancer l'exécution du flux de travail en recevant les tâches dedécision et en renvoyant à Amazon SWF de nouvelles décisions, jusqu'à ce qu'ils aient déterminé quel'exécution du flux de travail était terminée. Il renvoie alors une décision de fermeture de l'exécution de fluxde travail. Après la fermeture de l'exécution du flux de travail, Amazon SWF cesse de planifier d'autrestâches pour cette exécution.

Dans l'exemple de commerce en ligne, le décideur détermine si chaque étape a été effectuéecorrectement, puis planifie l'étape suivante ou gère les conditions d'erreur.

Un décideur représente un thread ou un processus informatique unique. Plusieurs décideurs peuvent traiterles tâches du même type de flux de travail.

Outils de traitement d'activitéUn outil de traitement d'activité est un processus ou un thread qui exécute les tâches d'activité faisantpartie de votre flux de travail. La tâche d'activité représente une des tâches que vous avez identifiées dansvotre application.

Pour utiliser une tâche d'activité dans votre flux de travail, vous devez l'enregistrer à l'aide de la consoleAmazon SWF ou de l'action RegisterActivityType.

Chaque outil de traitement d'activité recherche dans Amazon SWF des tâches qu'il peut exécuter.Certaines tâches ne peuvent être effectuées que par certains outils de traitement d'activité. Après avoirreçu une tâche, l'outil de traitement d'activité la traite jusqu'à la fin, puis indique à Amazon SWF qu'elle estterminée et lui fournit le résultat. Il recherche ensuite une nouvelle tâche. Les outils de traitement d'activitéassociés à une exécution de flux de travail continuent de cette façon : il traitent les tâches jusqu'à ce quel'exécution de flux de travail soit terminée. Dans l'exemple de commerce en ligne, les outils de traitementd'activité sont des applications et des processus indépendants utilisés par des personnes, telles que desopérateurs de traitement de carte de crédit et des employés d'entrepôt, qui effectuent les différentes étapesdu processus.

Un outil de traitement d'activité représente un processus (ou un thread) informatique unique. Plusieursoutils de traitement d'activité peuvent traiter les tâches du même type d'activité.

Echange de données entre les acteursLes données d'entrée peuvent être transmises à une exécution de flux de travail lorsqu'il démarre. Demême, elles peuvent être transmises aux outils de traitement d'activité lorsqu'ils planifient des tâchesd'activité. Quand une tâche d'activité est terminée, l'outil de traitement d'activité renvoie les résultats àAmazon SWF. De même, un décideur peut signaler les résultats d'une exécution de flux de travail lorsquecelle-ci est terminée. Chaque acteur peut envoyer des données à Amazon SWF ou en recevoir, via deschaînes dont la forme est définie par l'utilisateur. Selon la taille et la sensibilité des données, vous pouvezles transmettre directement ou via un pointeur vers les données stockées sur un autre système ou service(par exemple, Amazon S3 ou DynamoDB). Les données transmises directement et les pointeurs renvoyantvers d'autres magasins de données sont enregistrés dans l'historique d'exécution du flux de travail.Cependant, Amazon SWF ne copie ni ne met en cache les données issues de magasins externes dans lecadre de l'historique.

Comme Amazon SWF gère l'état complet de chaque exécution de flux de travail, y compris les entrées etles résultats des tâches, tous les acteurs peuvent être sans état. Par conséquent, le traitement des flux detravail est hautement évolutif. Lorsque la charge système augmente, il vous suffit d'ajouter des acteurs pouraccroître la capacité.

Version de l'API 2012-01-2552

Page 59: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurTâches

Tâches Amazon SWFAmazon SWF interagit avec les outils de traitement d'activité et les décideurs en leur fournissant desaffectations appelées tâches. Il existe trois types de tâches dans Amazon SWF :

• Tâche d'activité – Une tâche d'activité demande à un travail d'activité de remplir sa fonction, telle quela vérification de l'inventaire ou le débit d'une carte de crédit. La tâche d'activité contient toutes lesinformations dont l'outil de traitement d'activité a besoin pour effectuer l'action requise.

• Tâche Lambda – Une tâche Lambda est similaire à une tâche d'activité, mais exécute une fonctionLambda au lieu d'une activité Amazon SWF classique. Pour plus d'informations sur la façon de définirune tâche Lambda, consultez la section Tâches AWS Lambda (p. 116).

• Tâche de décision – Une tâche de décision indique à un décideur que l'état d'exécution du flux de travaila été modifié de telle sorte que le décideur puisse déterminer l'activité suivante à exécuter. La tâche dedécision contient l'historique du flux de travail en cours.

Amazon SWF planifie une tâche de décision lorsque le flux de travail démarre et chaque fois qu'il changed'état (quand une tâche d'activité se termine, par exemple). Chaque tâche de décision contient une vuepaginée de l'historique complet d'exécution du flux de travail. Le décideur analyse l'historique d'exécutiondu flux de travail et renvoie à Amazon SWF un ensemble de décisions qui spécifient ce qui doit se produireensuite dans l'exécution du flux de travail. Fondamentalement, chaque tâche de décision donne audécideur l'occasion d'évaluer le flux de travail et d'orienter Amazon SWF en conséquence.

Pour s'assurer qu'aucune décision contradictoire n'est traitée, Amazon SWF attribue chaque tâche dedécision à un seul décideur et ne permet qu'une seule tâche de décision active à la fois dans une exécutionde flux de travail.

Le tableau suivant illustre la relation entre les différents éléments associés aux flux de travail et auxdécideurs.

Conception logique Enregistré comme Effectué par Reçoit et effectue Génère

Flux de travail Type de flux detravail

Décideur Tâches dedécision

Décisions

Lorsqu'un outil de traitement d'activité a terminé la tâche d'activité, il signale à Amazon SWF que la tâches'est terminée et inclut tous les résultats correspondants qui ont été générés. Amazon SWF met à jourl'historique d'exécution du flux de travail avec un événement qui indique que la tâche est terminée, puisplanifie une tâche de décision afin de transmettre l'historique mis à jour au décideur.

Amazon SWF attribue chaque tâche d'activité à un seul outil de traitement d'activité. Une fois que la tâcheest attribuée, aucun autre outil de traitement d'activité ne peut se l'approprier ou l'accomplir.

Le tableau suivant illustre la relation entre les différents éléments liés aux activités.

Conception logique Enregistré comme Effectué par Reçoit et effectue Génère

Activité Type d'activité Outil de traitementd'activité

Tâches d'activité Données derésultat

Domaines Amazon SWFLes domaines permettent d'inclure les ressources Amazon SWF dans votre compte AWS. Tous lescomposants d'un flux de travail, tels que le type de flux de travail et les types de l'activité, doivent être

Version de l'API 2012-01-2553

Page 60: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurIdentificateurs d'objet

spécifiés dans un domaine. Il est possible d'avoir plus d'un flux de travail dans un domaine. Cependant, lesflux de travail de différents domaines ne peuvent pas interagir entre eux.

Lorsque vous configurez un nouveau flux de travail, avant de configurer les autres composants du flux detravail, vous devez enregistrer un domaine, si vous ne le n'avez pas déjà fait.

Lorsque vous enregistrez un domaine, vous spécifiez une période de conservation de l'historique des fluxde travail. Cette période correspond à la durée pendant laquelle Amazon SWF continue à conserver desinformations sur l'exécution du flux de travail une fois que celle-ci est terminée.

Identificateurs d'objet Amazon SWFLa liste suivante décrit comment les objets Amazon SWF, tels que les exécutions de flux de travail, sontidentifiés de manière unique.

• Type de flux de travail – Un type de flux de travail enregistré est identifié par son domaine, son nom et saversion. Les types de flux de travail sont spécifiés dans l'appel à RegisterWorkflowType.

• Type d'activité – Un type d'activité enregistré est identifié par son domaine, son nom et sa version. Lestypes d'activité sont spécifiés dans l'appel à RegisterActivityType.

• Tâches de décision et tâches d'activité – Chaque tâche de décision et chaque tâche d'activité sontidentifiées par un jeton de tâche unique. Le jeton de tâche est généré par Amazon SWF et est renvoyédepuis PollForDecisionTask ou PollForActivityTask avec d'autres informations sur la tâchedans la réponse. Même si le jeton est plus couramment utilisé par le processus qui a reçu la tâche, cedernier peut transmettre le jeton à un autre processus, qui peut ensuite signaler la fin ou l'échec de latâche.

• Exécution du flux de travail – Une seule exécution de flux de travail est identifiée par le domaine, un IDde flux de travail et un ID d'exécution. Les deux premiers identificateurs sont des paramètres transmis àStartWorkflowExecution. L'ID de série est renvoyé par StartWorkflowExecution.

Listes de tâches Amazon SWFLes listes de tâches permettent d'organiser les différentes tâches associées à un flux de travail. D'unecertaine manière, elles sont similaires aux files d'attente dynamiques. Quand une tâche est planifiée dansAmazon SWF, vous pouvez spécifier une file d'attente (liste de tâches) pour l'y ajouter. De même, lorsquevous interrogez Amazon SWF pour obtenir une tâche, vous indiquez dans quelle file d'attente (liste detâches) elle se trouve.

Les listes de tâches constituent un mécanisme flexible pour acheminer les tâches aux outils de traitementd'activité en fonction de vos besoins. Comme les listes de tâches sont dynamiques, vous n'avez pas besoinde les enregistrer ni de les créer explicitement via une action : la planification d'une tâche suffit à créer laliste de tâches, si elle n'existe déjà.

Il existe des listes distinctes pour les tâches d'activité et les tâches de décision. Une tâche est toujoursplanifiée dans une seule liste de tâches. Elle n'est partagée avec aucune autre liste. En outre, comme lesactivités et les flux de travail, les listes de tâches sont limitées à une région AWS et à un domaine AmazonSWF spécifiques.

Rubriques• Listes de tâches de décision (p. 55)• Listes de tâches d'activité (p. 55)• Routage des tâches (p. 55)

Version de l'API 2012-01-2554

Page 61: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurListes de tâches de décision

Listes de tâches de décisionChaque exécution de flux de travail est associée à une liste de tâches de décision spécifique. Lorsqu'untype de flux de travail est enregistré (action RegisterWorkflowType), vous pouvez spécifier une liste detâches par défaut pour les exécutions de ce type de flux de travail. Lorsque le démarreur du flux de travaillance l'exécution de ce dernier (action StartWorkflowExecution), il a la possibilité de définir une listede tâches différentes pour l'exécution de ce flux de travail.

Quand un décideur recherche une nouvelle tâche de décision (action PollForDecisionTask), il spécifieune liste de tâches de décision dans laquelle effectuer la recherche. Un seul décideur peut servir plusieursexécutions de flux de travail en appelant PollForDecisionTask plusieurs fois, à l'aide d'une liste detâches spécifique à chaque exécution de flux de travail dans chaque appel. Le décideur peut égalementinterroger une seule liste de tâches de décision fournissant les tâches de décision de plusieurs exécutionsde flux de travail. De même, plusieurs décideurs peuvent interroger la liste de tâches d'une seule exécutionde flux de travail.

Listes de tâches d'activitéUne seule liste de tâches d'activité peut contenir des tâches avec des types d'activités différents. Lestâches sont planifiées sur la liste des tâches dans l'ordre. Amazon SWF renvoie les tâches de la liste dansl'ordre, sur la base du meilleur effort. Dans certains cas, l'ordre de la liste de tâches n'est pas respecté.

Lorsqu'un type d'activité est enregistré (action RegisterActivityType), vous pouvez spécifier une liste detâches par défaut pour ce type d'activité. Par défaut, les tâches d'activité de ce type seront planifiéesdans la liste de tâches prédéfinie. Toutefois, lorsque le décideur planifie une tâche d'activité (décisionScheduleActivityTask), il peut choisir d'utiliser une liste de tâches distincte. Si le décideur ne spécifie pasune liste de tâches, c'est la liste de tâches par défaut qui est utilisée. Dès lors, vous pouvez ajouter destâches d'activité dans des listes de tâche spécifiques en fonction de leurs attributs. Par exemple, vouspouvez placer toutes les instances d'une tâche d'activité pour un type de carte de crédit donné dans uneliste de tâches particulière.

Routage des tâchesLorsqu'un outil de traitement d'activité recherche une nouvelle tâche (action PollForActivityTask), ilpeut définir une liste de tâches d'activité dans laquelle effectuer la recherche. Dans ce cas, l'outil detraitement d'activité acceptera uniquement les tâches provenant de cette liste. De cette manière, vouspouvez vous assurer que certaines tâches sont uniquement affectées à des outils de traitement d'activitéspécifiques. Par exemple, vous pouvez créer une liste pour les tâches qui nécessitent l'utilisation d'unordinateur hautes performances. Seuls les outils de traitement d'activité qui utilisent le matériel appropriépourront interroger cette liste de tâches. Vous pouvez également créer une liste de tâches pour une régiongéographique donnée et vous assurer que seuls les outils de traitement d'activité déployés dans cetterégion sélectionnent ces tâches. De même, vous pouvez créer une liste de tâches pour les commandesprioritaires afin de toujours vérifier cette liste en premier.

L'attribution de tâches particulières à des outils de traitement d'activité spécifiques s'appelle le routagede tâches. Le routage des tâches est facultatif. Si vous ne spécifiez pas une liste des tâches lors de laplanification d'une tâche d'activité, celle-ci est automatiquement ajoutée à la liste des tâches par défaut.

Fermeture d'une exécution de flux de travailAmazon SWF

Une fois que vous démarrez une exécution de flux de travail, celle-ci est ouverte. Vous pouvez la fermercomme étant terminée, comme annulée, comme ayant échoué ou comme ayant expiré. Vous pouvez

Version de l'API 2012-01-2555

Page 62: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCycle de vie d'une exécution de flux de travail Amazon SWF

également la traiter comme nouvelle exécution ou comme étant arrêtée. Une exécution de flux de travailpeut être fermée par le décideur, par la personne qui administre le flux de travail ou par Amazon SWF.

Si le décideur détermine que les activités du flux de travail sont terminées, il doit fermer l'exécution deflux de travail comme étant terminée via l'action RespondDecisionTaskCompleted et transmettre ladécision CompleteWorkflowExecution.

Un décideur peut également fermer l'exécution de flux de travail comme étant annulée ou comme ayantéchoué. Pour annuler l'exécution, il doit utiliser l'action RespondDecisionTaskCompleted et transmettrela décision CancelWorkflowExecution.

Le décideur doit mettre en échec l'exécution de flux de travail si son état sort du domaine d'achèvementnormal. Pour mettre en échec l'exécution, il doit utiliser l'action RespondDecisionTaskCompleted ettransmettre la décision FailWorkflowExecution.

Amazon SWF surveille les exécutions de flux de travail pour s'assurer qu'elles ne dépassent pas lesparamètres de délai spécifiés par l'utilisateur. Si une exécution de flux de travail expire, Amazon SWF laferme automatiquement. Pour plus d'informations sur les valeurs de délai, consultez la section AmazonSWF Types de délai (p. 143).

Un décideur peut aussi fermer l'exécution et la traiter de manière logique comme nouvelleexécution en utilisant l'action RespondDecisionTaskCompleted et en transmettant la décisionContinueAsNewWorkflowExecution. Cette stratégie est particulièrement utile pour les exécutions deflux de travail de longue durée pour lesquelles l'historique peut devenir trop volumineux au fil du temps.

Enfin, vous pouvez arrêter des exécutions de flux de travail directement à partir de la console AmazonSWF ou par programmation via l'API TerminateWorkflowExecution. Cet arrêt force la fermeture del'exécution de flux de travail. L'annulation est préférable à l'arrêt, car elle permet aux décideurs de gérer lafermeture de l'exécution de flux de travail.

Amazon SWF suspend une exécution de flux de travail si l'exécution dépasse les limites définies parcertains services. Amazon SWF met fin à un flux de travail enfant si le flux de travail parent est terminé etque la stratégie enfant applicable indique que le flux de travail enfant doit également être terminé.

Cycle de vie d'une exécution de flux de travailAmazon SWF

Depuis le début d'une exécution de flux de travail jusqu'à sa fin, Amazon SWF interagit avec les acteurs enleur affectant les tâches appropriées (tâches d'activité ou tâches de décision).

Le schéma suivant illustre le cycle de vie d'une exécution de flux de travail de traitement des commandesdu point de vue des composants qui y jouent un rôle.

Cycle de vie d'exécution du flux de travailLe tableau suivant explique chaque tâche de l'image précédente.

Version de l'API 2012-01-2556

Page 63: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCycle de vie d'exécution du flux de travail

Description Action, décision ou événement

1. Le démarreur duflux de travail appellel'action Amazon SWFappropriée pourdémarrer l'exécutionde flux de travaild'une commande,en fournissant lesinformations decommande.

StartWorkflowExecution action.

2. Amazon SWF reçoitla demande d'exécutionde flux de travail dedébut, puis planifiela première tâche dedécision.

Événement WorkflowExecutionStarted et événementDecisionTaskScheduled.

3. Le décideur reçoitla tâche depuisAmazon SWF, examinel'historique, applique lalogique de coordinationafin de déterminerqu'aucune activitéprécédente n'a eulieu, prend la décisionde planifier l'activitéde vérification decommande avec lesinformations dont l'outilde traitement d'activitéa besoin pour traiterla tâche, et renvoie ladécision à AmazonSWF.

Action PollForDecisionTask. ActionRespondDecisionTaskCompleted et décision ScheduleActivityTask.

4. Amazon SWF reçoitla décision, planifiela tâche d'activitéde vérification decommande et attendqu'elle se termine ouqu'elle expire.

ActivityTaskScheduled event

5. Un outil de traitementd'activité qui peuteffectuer l'activitéde vérification decommande reçoit latâche, l'exécute etrenvoie les résultats àAmazon SWF.

Actions PollForActivityTask et RespondActivityTaskCompleted

6. Amazon SWF reçoitles résultats de l'activité

Événement ActivityTaskCompleted et événementDecisionTaskScheduled.

Version de l'API 2012-01-2557

Page 64: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCycle de vie d'exécution du flux de travail

Description Action, décision ou événementde vérification decommande, les ajouteà l'historique de flux detravail et planifie unetâche de décision.

7. Le décideur reçoitla tâche depuisAmazon SWF, examinel'historique, applique lalogique de coordination,prend la décisionde planifier la tâched'activité de débit de lacarte de crédit avec lesinformations dont l'outilde traitement d'activitéa besoin pour traiterla tâche, et renvoie ladécision à AmazonSWF.

Action PollForDecisionTask. ActionRespondDecisionTaskCompleted avec la décisionScheduleActivityTask.

8. Amazon SWF reçoitla décision, planifie latâche d'activité de débitde la carte de crédit etattend qu'elle se termineou qu'elle expire.

Événement DecisionTaskCompleted et événementActivityTaskScheduled.

9. Un travail d'activitéqui peut effectuerl'activité de débit de lacarte de crédit reçoitla tâche, l'accomplit etrenvoie les résultats àAmazon SWF.

Actions PollForActivityTask et RespondActivityTaskCompleted

10. Amazon SWF reçoitles résultats de la tâched'activité de débit dela carte de crédit, lesajoute à l'historique deflux de travail et planifieune tâche de décision.

Événement ActivityTaskCompleted et événementDecisionTaskScheduled.

Version de l'API 2012-01-2558

Page 65: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCycle de vie d'exécution du flux de travail

Description Action, décision ou événement

11. Le décideurreçoit la tâche depuisAmazon SWF, examinel'historique, applique lalogique de coordination,prend la décisionde planifier la tâched'activité d'envoi decommande avec lesinformations dont l'outilde traitement d'activitéa besoin pour traiterla tâche, et renvoie ladécision à AmazonSWF.

Action PollForDecisionTask. RespondDecisionTaskCompleted avecla décision ScheduleActivityTask.

12. Amazon SWF reçoitla décision, planifie unetâche d'activité d'envoide commande et attendqu'elle se termine ouqu'elle expire.

Événement DecisionTaskCompleted et événementActivityTaskScheduled.

13. Un outil detraitement d'activité quipeut effectuer l'activitéd'envoi de commandereçoit la tâche, l'exécuteet renvoie les résultats àAmazon SWF.

Actions PollForActivityTask et RespondActivityTaskCompleted

14. Amazon SWF reçoitles résultats de la tâched'activité d'envoi decommande, les ajouteà l'historique de flux detravail et planifie unetâche de décision.

Événement ActivityTaskCompleted et événementDecisionTaskScheduled.

15. Le décideurreçoit la tâche depuisAmazon SWF,examine l'historique,applique la logique decoordination, prend ladécision de planifierla tâche d'activité defin d'enregistrementavec les informationsdont l'outil de traitementd'activité a besoinpour traiter la tâche, etrenvoie la décision àAmazon SWF.

Action PollForDecisionTask. ActionRespondDecisionTaskCompleted avec la décisionScheduleActivityTask.

Version de l'API 2012-01-2559

Page 66: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurInterrogation de tâches

Description Action, décision ou événement

16. Amazon SWF reçoitla décision, planifie unetâche d'activité de find'enregistrement etattend qu'elle se termineou qu'elle expire.

Événement DecisionTaskCompleted et événementActivityTaskScheduled.

17. Un travail d'activitéqui peut effectuerl'activité de find'enregistrement reçoitla tâche, l'accomplit etrenvoie les résultats àAmazon SWF.

Actions PollForActivityTask et RespondActivityTaskCompleted

18. Amazon SWFreçoit les résultats dela tâche d'activité de find'enregistrement, lesajoute à l'historique deflux de travail et planifieune tâche de décision.

Événement ActivityTaskCompleted et événementDecisionTaskScheduled.

19. Le décideurreçoit la tâche depuisAmazon SWF, examinel'historique, applique lalogique de coordination,prend la décision defermer l'exécution deflux de travail et renvoiela décision ainsi queles résultats à AmazonSWF.

Action PollForDecisionTask. ActionRespondDecisionTaskCompleted avec la décisionCompleteWorkflowExecution.

20. Amazon SWF fermel'exécution de fluxde travail et archivel'historique à des fins deréférence ultérieure.

WorkflowExecutionCompleted event.

Interrogation de tâches dans Amazon SWFLes décideurs et les outils de traitement d'activité communiquent avec Amazon SWF via l'interrogation delongue durée. Le décideur ou l'outil de traitement d'activité établit périodiquement une communication avecAmazon SWF, en informant Amazon SWF qu'il est disponible et peut accepter une tâche, puis spécifie uneliste des tâches pouvant lui être attribuées.

Si une tâche est disponible sur la liste de tâches spécifiée, Amazon SWF la retourne immédiatementdans la réponse. Si aucune tâche n'est disponible, Amazon SWF conserve la connexion TCP ouvertependant une durée maximale de 60 secondes de telle sorte que, si une tâche devient disponible pendantcette durée, elle est renvoyée dans la même connexion. Si aucune tâche n'est disponible dans le délaide 60 secondes, renvoie une réponse vide et ferme la connexion. (Une réponse vide est une structure

Version de l'API 2012-01-2560

Page 67: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurConcepts avancés

de tâche dans laquelle la valeur taskToken est une chaîne vide.) Dans ce cas, le décideur ou l'outil detraitement d'activité doit relancer l'attente active.

L'attente active de longue durée convient particulièrement au traitement des tâches volumineuses. Ellepermet aux décideurs et aux outils de traitement d'activité de gérer leur propre capacité et elle est facile àutiliser lorsque les décideurs et les outils de traitement d'activité se trouvent derrière un pare-feu.

Pour plus d'informations, consultez Recherche des tâches de décision (p. 124) et Recherche de tâchesd'activité (p. 120).

Concepts avancés d'Amazon SWFL'exemple de commerce en ligne de la section Fonctionnement de Amazon SWF (p. 45) représenteun scénario de flux de travail simplifié. En réalité, vous souhaiterez probablement que votre flux de travaileffectue des tâches simultanées (envoi d'un e-mail de confirmation et autorisation d'une carte de crédit),enregistre les événements majeurs (tous les articles ont été rassemblés), mette à jour la commande encas de modifications (ajout ou suppression d'un article) et prenne d'autres décisions plus avancées dans lecadre de l'exécution de votre flux de travail. Cette section décrit les fonctions avancées que vous pouvezutiliser pour créer des flux de travail robustes et sophistiqués.

Rubriques• Contrôle de version (p. 61)• Signaux (p. 62)• Flux de travail enfants (p. 62)• Marqueurs (p. 63)• Balises (p. 64)• Mise en œuvre des choix exclusifs avec Amazon Simple Workflow Service (p. 66)• Amazon Simple Workflow Service Temporisateurs (p. 68)• Signaux Amazon Simple Workflow Service (p. 69)• Amazon Simple Workflow Service Annulation d'une tâche d'activité (p. 70)• Marqueurs Amazon Simple Workflow Service (p. 71)

Contrôle de versionLes besoins de l'entreprise vous obligent parfois à utiliser des implémentations différentes ou des variationsdu même flux de travail, ou encore l'exécution simultanée de plusieurs activités. Par exemple, il se peutque vous souhaitiez tester une nouvelle implémentation d'un flux de travail pendant qu'un autre est enproduction. Vous avez peut-être également besoin d'exécuter deux implémentations distinctes avec deuxensembles de fonctions différents, comme une implémentation de base et une implémentation avancée. Lagestion des versions vous permet d'exécuter plusieurs implémentations de flux de travail et des activitéssimultanément, quels que soient vos besoins.

Une version est associé aux types de flux de travail et d'activité au moment de leur enregistrement. Laversion est une chaîne de forme libre dont vous pouvez choisir le schéma. Pour créer une nouvelle versiond'un type enregistré, vous devez l'enregistrer avec le même nom et une autre version. Listes de tâchesAmazon SWF (p. 54), décrit précédemment, peut également vous aider à mettre en œuvre la gestiondes versions. Imaginez une situation où les exécutions de flux de travail en cours sont de longue duréepour un type donné et où les circonstances nécessitent une révision du flux de travail, tel que l'ajout d'unenouvelle fonctionnalité. Pour mettre en œuvre cette nouvelle fonctionnalité, vous pourriez créer d'autresversions des types et des outils de traitement d'activité, ainsi qu'un nouveau décideur. Ensuite, vouspourriez lancer des exécutions de la nouvelle version de flux de travail avec un autre ensemble de listes

Version de l'API 2012-01-2561

Page 68: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurSignaux

de tâches. De cette façon, différentes versions d'exécution de flux de travail pourraient être exécutéessimultanément sans interférer les unes avec les autres.

SignauxLes signaux vous permettent d'injecter des informations dans une exécution de flux de travail en cours.Dans certains scénarios, vous souhaitez parfois ajouter des informations à une exécution de flux de travailen cours d'exécution pour l'informer que quelque chose a changé ou pour l'informer d'un événementexterne. N'importe quel processus peut envoyer un signal à une exécution de flux de travail ouverte. Parexemple, une exécution de flux de travail peut en signaler une autre.

Pour utiliser les signaux, définissez le nom et les données de signal à transmettre au signal— le cas échéant. Ensuite, programmez le décideur pour qu'il reconnaisse cet événement designal (WorkflowExecutionSignaled) dans l'historique et pour qu'il le traite de façon appropriée.Lorsqu'un processus veut signaler une exécution de flux de travail, il appelle Amazon SWF (àl'aide de l'action SignalWorkflowExecution ou, dans le cas d'un décideur, à l'aide de la décisionSignalExternalWorkflowExecution) qui spécifie l'identificateur de l'exécution de flux de travail cible, le nomdu signal et les données du signal. Amazon SWF reçoit ensuite le signal, l'enregistre dans l'historiquede l'exécution de travail cible et planifie une tâche de décision. Lorsque le décideur reçoit la tâche de ladécision, il reçoit également le signal dans l'historique d'exécution du flux de travail. Le décideur peutensuite effectuer les actions appropriées en fonction du signal et de ses données.

Voici certains scénarios où des signaux peuvent être utilisés :

• Suspension de la progression des exécutions de flux de travail tant qu'un signal n'a pas été reçu (attented'une expédition d'inventaire, par exemple).

• Envoi d'informations susceptibles d'avoir une incidence sur la logique de décision des décideurs à uneexécution de flux de travail. Ce signal est utile pour les flux de travail soumis à des événements externes(tentative de finalisation de la vente d'une action après la fermeture de la Bourse, par exemple).

• Mise à jour d'une exécution de flux de travail lorsque vous anticipez des modifications éventuelles(modification de la quantité d'une commande après l'enregistrement de la commande et avant sonenvoi).

Dans les cas où un flux de travail doit être annulé—par exemple, la commande elle-même a été annuléepar le client—l'action RequestCancelWorkflowExecution doit être utilisée au lieu d'envoyer un signalau flux de travail.

Flux de travail enfantsLes flux de travail complexes peuvent être divisés en composants plus petits, plus faciles à gérer etéventuellement réutilisables avec les flux de travail enfants. Un flux de travail enfant est une exécution deflux de travail initiée par une autre exécution de flux de travail (parent). Pour lancer un flux de travail enfant,le décideur du flux de travail parent utilise la décision StartChildWorkflowExecution. Les donnéesd'entrée spécifiées avec cette décision sont mises à disposition du flux de travail enfant par le biais de sonhistorique.

Les attributs de la décision StartChildWorkflowExecution spécifient également la stratégie enfant, àsavoir la façon dont Amazon SWF doit gérer le cas où l'exécution du flux de travail parent se termine avantcelle du flux de travail enfant. Trois valeurs sont possibles :

• TERMINATE : Amazon SWF met fin aux exécutions enfant.• REQUEST_CANCEL : Amazon SWF essaie d'annuler l'exécution enfant en ajoutant un événementWorkflowExecutionCancelRequested à l'historique d'exécution du flux de travail enfant.

• ABANDON : Amazon SWF n'effectue aucune action, et les exécutions enfant se poursuivent.

Version de l'API 2012-01-2562

Page 69: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMarqueurs

Une fois lancée, l'exécution du flux de travail enfant fonctionne comme une exécution habituelle. Quandelle se termine, Amazon SWF enregistre cet événement, ainsi que ses résultats, dans l'historiqued'exécution du flux de travail parent. Voici des exemples de flux de travail enfants :

• Flux de travail enfant de traitement de carte de crédit utilisé par les flux de travail de différents sites Web• Flux de travail enfant qui vérifie l'adresse e-mail du client, qui contrôle que ce dernier ne s'est pas

désinscrit de la liste de diffusion, qui envoie l'e-mail et qui s'assure qu'il a été remis ou qu'il n'a paséchoué.

• Flux de travail enfant de récupération et de stockage de base de données, qui combine la connexion, laconfiguration, la transaction et la vérification.

• Flux de travail enfant de compilation du code source, qui combine le développement, la création depaquets et la vérification.

Dans notre exemple de commerce en ligne, il peut être utile d'inclure l'activité de débit de la carte decrédit dans un flux de travail enfant. Pour ce faire, vous pouvez enregistrer un nouveau flux de travail devérification du client, enregistrer les activités de vérification de l'adresse du client et de contrôle dans labase de données des fraudes, puis définir la logique de coordination des tâches. Puis, un décideur du fluxde travail de commande client peut initier un flux de travail enfant de vérification du client en planifiant ladécision StartChildWorkflowExecution qui spécifie ce type de flux de travail.

La figure suivante illustre un flux de travail de commande client, qui inclut un nouveau flux de travail enfantde vérification, lequel contrôle l'adresse du client, ainsi que la base de données des fraudes, puis débite lacarte de crédit.

Plusieurs flux de travail peuvent créer des exécutions de flux de travail enfants à l'aide du même type deflux de travail. Par exemple, le flux de travail enfant de vérification du client peut également être utilisé dansd'autres sections d'une entreprise. Les événements d'un flux de travail enfant figurent dans son proprehistorique, et non pas dans celui du flux de travail parent.

Comme les flux de travail enfants ne sont que des exécutions de flux de travail initiées par un décideur, ilspeuvent également être lancés comme des exécutions de flux de travail autonomes standard.

MarqueursIl arrive que vous souhaitiez enregistrer des informations spécifiques à votre cas d'utilisation dansl'historique d'exécution d'un flux de travail. Les marqueurs vous permettent d'enregistrer dans l'historiqued'exécution du flux de travail des informations que vous pouvez utiliser pour répondre à vos besoins.

Pour utiliser les marqueurs, un décideur utilise la décision RecordMarker, nomme le marqueur,attache les données souhaitées à la décision, et informe Amazon SWF à l'aide de l'actionRespondDecisionTaskCompleted. Amazon SWF reçoit la demande, enregistre le marqueur dansl'historique de flux de travail et promulgue les autres décisions de la demande. A partir de ce moment,

Version de l'API 2012-01-2563

Page 70: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurBalises

les décideurs peuvent voir le marqueur dans l'historique du flux de travail et l'utiliser comme vous l'avezprogrammé.

Voici quelques exemples de marqueurs :

• Un compteur qui détermine le nombre de boucles dans un flux de travail récursif• Progression de l'exécution du flux de travail en fonction des résultats des activités• Informations résumées à partir des événements précédents de l'historique du flux de travail

Dans l'exemple de commerce en ligne, vous pouvez ajouter une activité qui vérifie l'inventaire tous les jourset qui incrémente chaque fois le nombre correspondant dans un marqueur. Ensuite, vous pouvez ajouterune logique de décision qui envoie un e-mail au client ou qui informe un responsable lorsque ce nombredépasse cinq, sans avoir à passer en revue l'historique complet.

BalisesAmazon SWF prend en charge le balisage d'une exécution de flux de travail. Cette approche est utilelorsque vous avez un grand nombre de ressources. Vous pouvez utiliser des balises de répartition descoûts pour organiser votre facture AWS afin de refléter votre propre structure de coût. Pour ce faire,inscrivez-vous pour que votre facture de compte AWS inclut les clés et valeurs de balise. Pour plusd'informations, consultez Configuration du rapport de répartition des coûts mensuel dans le AWS Billingand Cost Management Guide de l'utilisateur.

Amazon SWF permet d'ajouter jusqu'à cinq balises à une exécution de flux de travail. Chaque balise estune chaîne de forme libre qui peut contenir jusqu'à 256 caractères. Si vous souhaitez utiliser des balises,vous devez les attribuer lorsque vous lancez une exécution de flux de travail. Vous ne pouvez pas ajouterde balises à une exécution de flux de travail une fois que celle-ci a commencé. Vous ne pouvez pas nonplus supprimer ou modifier les balises déjà attribuées.

IAM prend en charge le contrôle de l'accès aux domaines Amazon SWF basé sur des balises. Pourcontrôler l'accès basé sur des balises, vous devez fournir des informations sur vos balises dans l'élémentde condition d'une stratégie IAM.

Rubriques• Gestion de balises Amazon SWF (p. 64)• Balisage des exécutions de flux de travail Amazon SWF (p. 65)• Contrôle de l'accès aux domaines Amazon SWF à l'aide de balises IAM (p. 66)

Gestion de balises Amazon SWFGérez des balises Amazon Simple Workflow Service à l'aide des kits SDK AWS ou en interagissantdirectement avec l'API Amazon SWF. L'API vous permet d'ajouter des balises lors de l'enregistrementd'un domaine, de répertorier des balises pour un domaine existant ainsi que d'ajouter ou de supprimer desbalises pour un domaine existant.

Note

La limite est de 50 balises par ressource. Voir General Account Quotas for AmazonSWF (p. 135)

• RegisterDomain

• ListTagsForResource

• TagResource

• UntagResource

Version de l'API 2012-01-2564

Page 71: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurBalises

Pour de plus amples informations, veuillez consulter Working with Amazon SWF APIs (p. 105) et AmazonSimple Workflow Service API Reference.

Balisage des exécutions de flux de travail Amazon SWFAmazon SWF vous permet d'associer des balises aux exécutions de flux de travail et d'utiliser ces balisespour rechercher les exécutions ultérieurement. Le balisage vous permet de filtrer la liste des exécutionslorsque vous avez recours aux opérations de visibilité. En choisissant avec soin les balises que vousassignez à une exécution, vous pouvez les utiliser pour créer des listes pertinentes.

Par exemple, supposons que vous exécutiez plusieurs centres de traitement. Un balisage approprié vouspermet de répertorier les processus qui se produisent dans un centre de traitement spécifique. Ou, pourprendre un autre exemple, si un client convertit différents types de fichiers multimédia, le balisage peutvous aider à montrer les différences de traitement utilisées pour convertir des fichiers image, audio etvidéo.

Vous pouvez associer jusqu'à cinq balises à une exécution de flux de travail à l'aide de l'actionStartWorkflowExecution, de la décision StartChildWorkflowExecution ou de la décisionContinueAsNewWorkflowExecution. Le balisage vous permet de filtrer vos résultats lorsque vousutilisez les actions de visibilité afin de répertorier les exécutions de flux de travail ou de les comptabiliser.

Pour utiliser le balisage

1. Concevez une stratégie de balisage. Pensez aux besoins de votre entreprise et créez une listedes balises qui ont un intérêt pour vous. Déterminer les exécutions qui recevront des balises.Même si un maximum de cinq balises peuvent être assignés à une exécution, votre bibliothèquepeut contenir autant de balises que vous le souhaitez. Comme une balise peut être une valeur dechaîne comprenant jusqu'à 256 caractères, elle permet de décrire presque n'importe quel conceptd'entreprise.

2. Identifiez une exécution avec jusqu'à cinq balises lors de sa création.3. Pour répertorier ou comptabiliser les exécutions qui contiennent une balise spécifique,

définissez le paramètre tagFilter avec les actions ListOpenWorkflowExecutions,ListClosedWorkflowExecutions, CountOpenWorkflowExecutions etCountClosedWorkflowExecutions. L'action filtrera les exécutions en fonction des balisesspécifiées.

L'association d'une balise à une exécution de flux de travail est irréversible.

Vous ne pouvez spécifier qu'une seule balise dans le paramètre tagFilter avecListWorkflowExecutions. En outre, la mise en correspondance des balises est sensible à la casse.Seules les correspondances exactes renvoient des résultats.

Supposons que vous ayez déjà configuré deux exécutions avec les balises suivantes.

Nom de l'exécution Balises attribuées

Exécution 1 Consommateur, février 2011

Exécution 2 Vente en gros, mars 2011

Vous pouvez filtrer la liste des exécutions renvoyées par ListOpenWorkflowExecutions au niveau dela balise Consumer. Les valeurs oldestDate et latestDate sont définies en tant que valeurs horairesUnix.

https://swf.us-east-1.amazonaws.com

Version de l'API 2012-01-2565

Page 72: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMise en œuvre d'un choix exclusif

RespondDecisionTaskCompleted{ "domain":"867530901", "startTimeFilter":{ "oldestDate":1262332800, "latestDate":1325348400 }, "tagFilter":{ "tag":"Consumer" }}

Contrôle de l'accès aux domaines Amazon SWF à l'aide debalises IAMVous pouvez contrôler l'accès aux domaines Amazon Simple Workflow Service en référençant des balisesassociées aux domaines Amazon SWF dans IAM. Par exemple, vous pouvez limiter les domaines AmazonSWF qui incluent une balise avec l'environnement de la clé et la production de la valeur :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "swf:*", "Resource": "arn:aws:swf:*:123456789012:/domain/*", "Condition": { "StringEquals": {"aws:ResourceTag/environment": "production"} } } ]}

Cette stratégie permettra de Deny l'accès à n'importe quel domaine qui a été balisé environment/production.

Pour plus d'informations, consultez :

• Contrôle de l'accès à l'aide de balises IAM• Tag-based Policies (p. 87)

Mise en œuvre des choix exclusifs avec AmazonSimple Workflow ServiceDans certains scénarios, vous souhaitez peut-être planifier un autre ensemble d'activités en fonction desrésultats d'une activité précédente. Ce modèle de choix exclusif vous permet de créer des flux de travailflexibles qui répondent aux exigences complexes de votre application.

Amazon Simple Workflow Service (Amazon SWF) ne dispose pas d'une action spécifique pour les choixexclusifs. Pour utiliser le choix exclusif, il suffit d'écrire la logique du décideur de sorte qu'il prenne desdécisions différentes en fonction des résultats de l'activité précédente. Voici certaines utilisations possiblesavec les choix exclusifs :

• Exécution d'activités de nettoyage, si les résultats d'une activité précédente ont échoué• Planification de différentes activités selon que le client a acheté un plan de base ou avancé• Exécution de différentes activités d'authentification en fonction de l'historique de commande du client

Version de l'API 2012-01-2566

Page 73: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMise en œuvre d'un choix exclusif

Dans l'exemple de commerce en ligne, vous pouvez utiliser le choix exclusif pour expédier ou annuler unecommande sur la base des résultats du débit de la carte de crédit. Dans la figure suivante, le décideurplanifie les tâches d'activité d'envoi de commande et de consignation de l'achèvement de la tâche si ledébit a fonctionné. Sinon, il planifie les tâches d'activité d'annulation de commande et d'envoi d'e-mail auclient.

Le décideur planifie l'activité ShipOrder si la carte de crédit est débitée avec succès. Sinon, le décideurplanifie l'activité CancelOrder.

Dans ce cas, programmez le décideur pour qu'il interprète l'historique et pour déterminer si la carte decrédit a été débitée avec succès. Pour ce faire, vous pouvez utiliser une logique similaire à celle-ci :

IF lastEvent = "WorkflowExecutionStarted" addToDecisions ScheduleActivityTask(ActivityType = "VerifyOrderActivity")

ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "VerifyOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "ChargeCreditCardActivity")

#Successful Credit Card Charge ActivitiesELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "ChargeCreditCardActivity" addToDecisions ScheduleActivityTask(ActivityType = "ShipOrderActivity")

ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "ShipOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "RecordOrderCompletionActivity")

ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "RecordOrderCompletionActivity" addToDecisions CompleteWorkflowExecution

#Unsuccessful Credit Card Charge ActivitiesELSIF lastEvent = "ActivityTaskFailed" AND ActivityType = "ChargeCreditCardActivity" addToDecisions ScheduleActivityTask(ActivityType = "CancelOrderActivity")

ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "CancelOrderActivity" addToDecisions ScheduleActivityTask(ActivityType = "EmailCustomerActivity")

ELSIF lastEvent = "ActivityTaskCompleted" AND ActivityType = "EmailCustomerActivity" addToDecisions CompleteWorkflowExecution

ENDIF

Si la carte de crédit a été débitée avec succès, le décideur doit répondre avecRespondDecisionTaskCompleted pour planifier l'activité ShipOrder.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{ "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[ { "decisionType":"ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes":{

Version de l'API 2012-01-2567

Page 74: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurTemporisateurs

"control":"OPTIONAL_DATA_FOR_DECIDER", "activityType":{ "name":"ShipOrder", "version":"2.4" }, "activityId":"3e2e6e55-e7c4-fee-deed-aa815722b7be", "scheduleToCloseTimeout":"3600", "taskList":{ "name":"SHIPPING" }, "scheduleToStartTimeout":"600", "startToCloseTimeout":"3600", "heartbeatTimeout":"300", "input": "123 Main Street, Anytown, United States" } } ]}

Si la carte de crédit n'a pas été débitée avec succès, le décideur doit répondre avecRespondDecisionTaskCompleted pour planifier l'activité CancelOrder.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{ "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[ { "decisionType":"ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes":{ "control":"OPTIONAL_DATA_FOR_DECIDER", "activityType":{ "name":"CancelOrder", "version":"2.4" }, "activityId":"3e2e6e55-e7c4-fee-deed-aa815722b7be", "scheduleToCloseTimeout":"3600", "taskList":{ "name":"CANCELLATIONS" }, "scheduleToStartTimeout":"600", "startToCloseTimeout":"3600", "heartbeatTimeout":"300", "input": "Out of Stock" } } ]}

Si Amazon SWF est en mesure de valider les données de l'action RespondDecisionTaskCompleted,Amazon SWF renvoie une réponse HTTP positive similaire à ce qui suit.

HTTP/1.1 200 OKContent-Length: 11Content-Type: application/jsonx-amzn-RequestId: 93cec6f7-0747-11e1-b533-79b402604df1

Amazon Simple Workflow Service TemporisateursUne temporisateur vous permet d'avertir le décideur lorsqu'un certain laps de temps s'est écoulé. Lorsqu'ilrépond à une tâche de décision, le décideur a la possibilité de répondre avec une décision StartTimer.

Version de l'API 2012-01-2568

Page 75: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurSignaux

Cette décision spécifie une durée après laquelle le temporisateur doit se déclencher. Une fois que la duréespécifiée s'est écoulée, Amazon SWF ajoute un événement TimerFired à l'historique d'exécution duflux de travail et planifie une tâche de décision. Le décideur peut ensuite utiliser ces informations pourdocumenter les autres décisions. L'un des champs d'application courants d'un temporisateur consiste àretarder l'exécution d'une tâche d'activité. Par exemple, un client peut souhaiter différer la livraison d'unarticle.

Signaux Amazon Simple Workflow ServiceLes signaux vous permettent d'informer une exécution de flux de travail des événements externeset d'insérer des informations dans une exécution de flux de travail en cours. N'importe quelprogramme peut envoyer un signal à une exécution de flux de travail en cours en appelant l'APISignalWorkflowExecution. Lorsqu'un signal est reçu, Amazon SWF l'enregistre dans l'historiqued'exécution du flux de travail comme événement WorkflowExecutionSignaled et planifie une tâche dedécision pour avertir le décideur.

Note

Toute tentative d'envoi d'un signal à une exécution de flux de travail qui n'est pas ouverte entraînel'échec de SignalWorkflowExecution avec UnknownResourceFault.

Dans cet exemple, l'exécution de flux de travail reçoit un signal pour annuler une commande.

https://swf.us-east-1.amazonaws.comSignalWorkflowExecution{"domain": "867530901", "workflowId": "20110927-T-1", "runId": "f5ebbac6-941c-4342-ad69-dfd2f8be6689", "signalName": "CancelOrder", "input": "order 3553"}

Si l'exécution de flux de travail reçoit le signal, Amazon SWF renvoie une réponse HTTP positive similaire àce qui suit. Amazon SWF génère une tâche de décision pour demander au décideur de traiter le signal.

HTTP/1.1 200 OKContent-Length: 0Content-Type: application/jsonx-amzn-RequestId: bf78ae15-3f0c-11e1-9914-a356b6ea8bdf

Dans certains cas, vous préférez attendre de recevoir un signal avant de continuer. Par exemple, unutilisateur peut annuler une commande en envoyant un signal, mais uniquement au sein d'une heure deplacement de l'ordre. Amazon SWF n'a pas de primitive pour permettre à un décideur d'attendre un signaldu service. Les fonctionnalités d'interruption doivent être mises en œuvre dans le décideur lui-même. Poureffectuer une interruption, le décideur doit lancer un temporisateur, à l'aide de la décision StartTimer,qui spécifie la durée pendant laquelle le décideur attendra le signal tout en continuant à rechercher destâches de décision. Lorsque le décideur reçoit une tâche de la décision, il doit vérifier l'historique pourvoir si le signal a été reçu ou si le temporisateur s'est déclenché. Si le signal a été reçu, il doit annuler letemporisateur. Toutefois, si, au lieu de cela, le temporisateur s'est déclenché, cela signifie que le signaln'est pas arrivé dans le délai spécifié. Pour résumer, si vous souhaitez attendre un signal spécifique,procédez comme suit.

1. Créez un temporisateur correspondant à la quantité de temps que le décideur doit attendre.2. Lorsqu'une tâche de décision est reçue, vérifiez l'historique pour déterminer si le signal est arrivé ou si le

temporisateur s'est déclenché.3. Si un signal est arrivé, annulez le temporisateur via la décision CancelTimer et traitez ce

signal. Selon le timing, l'historique peut contenir à la fois les événements TimerFired et

Version de l'API 2012-01-2569

Page 76: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAnnulation d'une tâche d'activité

WorkflowExecutionSignaled. Dans ce cas, vous pouvez compter sur l'ordre relatif des événementsde l'historique afin de déterminer celui qui s'est produit en premier.

4. Si le temporisateur s'est déclenché avant la réception d'un signal, l'attente du signal a expiré au niveaudu décideur. Vous pouvez mettre en échec l'exécution ou concevoir tout autre logique en fonction de vosbesoins.

Amazon Simple Workflow Service Annulation d'unetâche d'activitéL'annulation d'une tâche d'activité permet au décideur de mettre fin aux activités qui n'ont plus besoin d'êtreeffectuées. Amazon SWF utilise un mécanisme d'annulation et n'interrompt pas les tâches d'activité encours d'exécution. Vous devez programmer les outils de traitement d'activité pour traiter les demandesd'annulation.

Le décideur peut décider d'annuler une activité tâche alors que c'est une tâche de la décision de traitement.Pour annuler une tâche d'activité, le décideur utilise l'action RespondDecisionTaskCompleted avec ladécision RequestCancelActivityTask.

Si la tâche d'activité n'a pas encore été acquise par un outil de traitement d'activité, le service annule latâche. Notez qu'il existe une condition de concurrence potentielle dans le sens où un outil de traitementd'activité peut acquérir la tâche à tout moment. Si la tâche a déjà été attribuée à un outil de traitementd'activité, il sera invité à annuler la tâche.

Dans cet exemple, l'exécution de flux de travail reçoit un signal pour annuler la commande.

https://swf.us-east-1.amazonaws.comSignalWorkflowExecution{"domain": "867530901", "workflowId": "20110927-T-1", "runId": "9ba33198-4b18-4792-9c15-7181fb3a8852", "signalName": "CancelOrder", "input": "order 3553"}

Si l'exécution de flux de travail reçoit le signal, Amazon SWF renvoie une réponse HTTP positive similaire àce qui suit. Amazon SWF génère une tâche de décision pour demander au décideur de traiter le signal.

HTTP/1.1 200 OKContent-Length: 0Content-Type: application/jsonx-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Lorsque le décideur traite la tâche de décision et voit le signal dans l'historique, il tente d'annuler l'activitéen cours qui présente l'ID d'activité ShipOrderActivity0001. L'ID d'activité est fourni dans l'historiquedu flux de travail à partir de l'événement de la tâche d'activité planifiée.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{ "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ]

Version de l'API 2012-01-2570

Page 77: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMarqueurs

}

Si Amazon SWF reçoit la demande d'annulation, il renvoie une réponse HTTP positive similaire à ce quisuit :

HTTP/1.1 200 OKContent-Length: 0Content-Type: application/jsonx-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

La tentative d'annulation est enregistrée dans l'historique en tant qu'événementActivityTaskCancelRequested.

Si la tâche est annulée avec succès, ActivityTaskCanceledcomme indiqué par un événement — deprogramme— le décideur pour effectuer les actions appropriées qui doivent suivre l'annulation, telles que lafermeture de l'exécution du flux de travail.

Si la tâche d'activité n'a pas pu être annulée —par exemple, si la tâche se termine, échoue ou expireau lieu d'être annulée—, le décideur doit accepter les résultats de l'activité ou effectuer les tâches denettoyage ou d'atténuation des risques requises par votre cas d'utilisation.

Si la tâche d'activité a déjà été acquise par un outil de traitement d'activité, la demande d'annulationest transmise via le mécanisme task-heartbeat. Les outils de traitement d'activité peuvent utiliserRecordActivityTaskHeartbeat périodiquement pour indiquer à Amazon SWF que la tâche est encoreen cours.

Notez que les outils de traitement d'activité ne sont obligés de générer une pulsation, même si cetteapproche est recommandée pour les tâches de longue durée. L'annulation d'une tâche nécessitel'enregistrement d'une pulsation régulière. Si l'outil de traitement d'activité ne génère pas de pulsation, latâche ne peut pas être annulée.

Si le décideur demande une annulation de la tâche, Amazon SWF définit la valeur de l'objetcancelRequest sur true. L'objet cancelRequest fait partie de l'objet ActivityTaskStatus qui estrenvoyé par le service en réponse à RecordActivityTaskHeartbeat.

Amazon SWF n'empêche pas la finalisation d'une tâche d'activité dont l'annulation a été demandée. C'est àl'activité de déterminer comment gérer la demande d'annulation. Selon vos besoins, programmez l'outil detraitement d'activité pour annuler la tâche d'activité ou ignorer la demande d'annulation.

Si vous souhaitez que l'outil de traitement d'activité indique que le travail de la tâche d'activitéa été annulé, programmez-le pour répondre avec RespondActivityTaskCanceled. Si voussouhaitez que l'outil de traitement d'activité termine la tâche, programmez le pour répondre avec unRespondActivityTaskCompleted standard.

Quand Amazon SWF reçoit la requête RespondActivityTaskCompleted ouRespondActivityTaskCanceled, il met à jour l'historique d'exécution du flux de travail et planifie unetâche de décision pour en informer le décideur.

Programmez le décideur pour traiter la tâche de décision et pour renvoyer toutes décisionssupplémentaires. Si la tâche d'activité est annulée avec succès, programmez le décideur pour effectuer lestâches requises pour continuer ou pour fermer l'exécution du flux de travail. Si la tâche d'activité n'est pasannulée avec succès, programmez le décideur pour accepter les résultats, pour les ignorer ou pour planifiertout nettoyage requis.

Marqueurs Amazon Simple Workflow ServiceVous pouvez utiliser des marqueurs pour enregistrer les événements dans l'historique d'exécution duflux de travail à des fins spécifiques à l'application. Les marqueurs sont utiles lorsque vous souhaitez

Version de l'API 2012-01-2571

Page 78: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMarqueurs

enregistrer des informations personnalisées pour faciliter la mise en œuvre de la logique du décideur. Parexemple, vous pouvez utiliser un marqueur pour compter le nombre de boucles dans un flux de travailrécursif.

Dans l'exemple suivant, le décideur effectue une tâche de la décision et répond avec une actionRespondDecisionTaskCompleted qui contient une décision RecordMarker.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{ "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RecordMarker", "recordMarkerDecisionAttributes":{ "markerName":"customer elected special shipping offer" } }, ]}

Si Amazon SWF enregistre le marqueur avec succès, il renvoie une réponse HTTP positive similaire à cequi suit.

HTTP/1.1 200 OKContent-Length: 0Content-Type: application/jsonx-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

L'enregistrement d'un marqueur n'a pas pour effet de lancer une tâche de la décision. Pour éviter leblocage de l'exécution du flux de travail, un événement qui assure sa continuité doit avoir lieu. Parexemple, le décideur peut planifier une autre tâche d'activité, l'exécution du flux de travail peut recevoir unsignal ou une tâche d'activité déjà planifiée prend fin.

Version de l'API 2012-01-2572

Page 79: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurProtection des données

Security in Amazon Simple WorkflowService

Cette section fournit des informations sur la sécurité et l'authentification dans Amazon SWF.

Rubriques• Protection des données dans le Amazon Simple Workflow Service (p. 73)• Identity and Access Management in Amazon Simple Workflow Service (p. 74)• Journalisation et surveillance dans Amazon Simple Workflow Service (p. 88)• Compliance Validation for Amazon Simple Workflow Service (p. 102)• Resilience in Amazon Simple Workflow Service (p. 102)• Infrastructure Security in Amazon Simple Workflow Service (p. 103)• Configuration and Vulnerability Analysis in Amazon Simple Workflow Service (p. 103)

Cette section fournit des informations sur la sécurité et l'authentification dans AWS Step Functions.

Rubriques• Protection des données dans le Amazon Simple Workflow Service (p. 73)• Identity and Access Management in Amazon Simple Workflow Service (p. 74)• Journalisation et surveillance dans Amazon Simple Workflow Service (p. 88)• Compliance Validation for Amazon Simple Workflow Service (p. 102)• Resilience in Amazon Simple Workflow Service (p. 102)• Infrastructure Security in Amazon Simple Workflow Service (p. 103)• Configuration and Vulnerability Analysis in Amazon Simple Workflow Service (p. 103)

Step Functions utilise IAM pour contrôler l'accès aux autres services et ressources AWS. Pour un aperçude la manière dont IAM fonctionne, voir Aperçu de la gestion d’accès dans le IAM Guide de l'utilisateur.Pour un aperçu des informations d’identification de sécurité, voir AWS Informations d’identification desécurité dans le Référence générale d'Amazon Web Services.

Protection des données dans le Amazon SimpleWorkflow Service

Le modèle de responsabilité partagée AWS s'applique à la protection des données dans Amazon SimpleWorkflow Service. Comme décrit dans ce modèle, AWS est responsable de la protection de l'infrastructureglobale sur laquelle l'ensemble du cloud AWS s’exécute. La gestion du contrôle de votre contenu hébergésur cette infrastructure est de votre responsabilité. Ce contenu comprend les tâches de configuration et degestion de la sécurité des services AWS que vous utilisez. Pour plus d'informations sur la confidentialitédes données, veuillez consulter FAQ sur la confidentialité des données. Pour plus d'informations sur laprotection des données en Europe, veuillez consulter le billet de blog AWSShared Responsibility Model andGDPR sur la page AWSSecurity Blog.

À des fins de protection des données, nous vous recommandons de protéger les informationsd'identification du compte AWS et de configurer les comptes d'utilisateur individuels avec AWS Identityand Access Management (IAM). Ainsi, chaque utilisateur se voit attribuer uniquement les autorisations

Version de l'API 2012-01-2573

Page 80: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurChiffrement

nécessaires pour exécuter ses tâches. Nous vous recommandons également de sécuriser vos donnéescomme indiqué ci-dessous :

• Utilisez l'authentification multi-facteurs (MFA) avec chaque compte.• Utilisez SSL/TLS pour communiquer avec des ressources AWS. Nous recommandons TLS 1.2 ou

version ultérieure.• Configurez l'API et la consignation des activités utilisateur avec AWS CloudTrail.• Utilisez des solutions de chiffrement AWS, ainsi que tous les contrôles de sécurité par défaut au sein des

services AWS.• Utilisez des services de sécurité gérés comme Amazon Macie, qui contribue à la découverte et à la

sécurisation des données personnelles stockées dans Amazon S3.• Si vous avez besoin de modules cryptographiques validés FIPS 140-2 lorsque vous accédez à AWS

via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour deplus amples informations sur les points de terminaison FIPS disponibles, consultez Federal InformationProcessing Standard (FIPS) 140-2.

Nous vous recommandons vivement de ne jamais placer d'informations identifiables sensibles, telles quedes numéros de compte de vos clients, dans des champs de formulaire comme Nom. Cela inclut lorsquevous utilisez Amazon SWF ou d'autres services AWS à l'aide de la console, de l'API, de l'interface de lignede commande (AWS CLI) ou des kits SDK AWS. Toutes les données que vous entrez dans Amazon SWFou d'autres services peuvent être récupérées pour être insérées dans des journaux de diagnostic. Lorsquevous fournissez une URL à un serveur externe, n'incluez pas les informations d'identification non chiffréesdans l'URL pour valider votre demande adressée au serveur.

Chiffrement dans Amazon Simple Workflow ServiceChiffrement au reposAmazon SWF chiffre toujours vos données au repos. Les données contenues Amazon Simple WorkflowService sont chiffrées au repos à l'aide d'un chiffrement transparent côté serveur. Cela réduit la lourdeuropérationnelle et la complexité induites par la protection des données sensibles. Le chiffrement au reposvous permet de créer des applications sensibles en matière de sécurité qui sont conformes aux exigencesréglementaires et de chiffrement

Chiffrement en transitToutes les données transmises entre Amazon SWF et les autres services sont chiffrées à l'aide duprotocole TLS (Transport Layer Security).

Identity and Access Management in Amazon SimpleWorkflow Service

L'accès à AWS Step Functions requiert des informations d'identification qu'AWS peut utiliser pourauthentifier vos demandes. Ces informations d'identification doivent être autorisées à accéder auxressources AWS, par exemple être autorisées à récupérer des données d'événement à partir d'autresressources AWS. Les sections suivantes fournissent des détails sur la façon dont vous pouvez utiliser AWSIdentity and Access Management (IAM) et Step Functions pour contribuer à sécuriser vos ressources encontrôlant les personnes pouvant y accéder.

• Authentication (p. 75)• Access Control (p. 76)

Version de l'API 2012-01-2574

Page 81: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAuthentication

AuthenticationVous pouvez utiliser les types d'identité suivants pour accéder à AWS :

• AWS account root user – When you sign up for AWS, you provide an email address and password that isassociated with your account. These are your root credentials, and they provide complete access to all ofyour AWS resources.

Important

For security reasons, we recommend that you use the root credentials only to create anadministrator, which is an IAM user with full permissions to your account. Then you can use thisadministrator to create other IAM users and roles with limited permissions. For more information,see IAM Best Practices and Creating an Admin User and Group in the IAM Guide de l'utilisateur.

• IAM user – An IAM user is an identity within your account that has specific custom permissions (forexample, permissions to send event data to a target in Amazon SWF). You can use an IAM user nameand password to sign in to secure AWS webpages such as the AWS Management Console, AWSDiscussion Forums, or the AWS Support Center.

 

In addition to a user name and password, you can also generate access keys for each user. You can usethese keys when you access AWS services programmatically, either through one of the several SDKsor by using the AWS Command Line Interface (AWS CLI). The SDK and AWS CLI tools use the accesskeys to cryptographically sign your request. If you don’t use the AWS tools, you must sign the requestyourself. Amazon Simple Workflow Service supports Signature Version 4, a protocol for authenticatinginbound API requests. For more information about authenticating requests, see Signature Version 4Signing Process in the Référence générale d'Amazon Web Services.

 • IAM role – An IAM role is another IAM identity that you can create in your account that has specific

permissions. It's similar to an IAM user, but it isn't associated with a specific person. An IAM role enablesyou to obtain temporary access keys that can be used to access AWS services and resources. IAM roleswith temporary credentials are useful in the following situations:

 • Federated user access – Instead of creating an IAM user, you can use preexisting identities from AWS

Directory Service, your enterprise user directory, or a web identity provider (IdP). These are knownas federated users. AWS assigns a role to a federated user when access is requested through anidentity provider. For more information about federated users, see Federated Users and Roles in theIAM Guide de l'utilisateur.

 • Cross-account access – You can use an IAM role in your account to grant another account permissions

to access your account’s resources. For an example, see Tutorial: Delegate Access Across AWSAccounts Using IAM Roles in the IAM Guide de l'utilisateur.

 • AWS service access – You can use an IAM role in your account to grant to an AWS service the

permissions needed to access your account’s resources. For example, you can create a role thatallows Amazon Redshift to access an Amazon S3 bucket on your behalf and then load data stored inthe bucket into an Amazon Redshift cluster. For more information, see Creating a Role to DelegatePermissions to an AWS Service in the IAM Guide de l'utilisateur.

 • Applications running on Amazon EC2 – Instead of storing access keys in the EC2 instance for use

by applications running on the instance and making AWS API requests, you can use an IAM role to

Version de l'API 2012-01-2575

Page 82: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAccess Control

manage temporary credentials for these applications. To assign an AWS role to an EC2 instance andmake it available to all of its applications, you can create an instance profile that is attached to theinstance. An instance profile contains the role and enables programs running on the EC2 instance toget temporary credentials. For more information, see Using Roles for Applications on Amazon EC2 inthe IAM Guide de l'utilisateur.

Access ControlVous pouvez avoir des informations d'identification valides pour authentifier vos demandes, mais à moinsd'avoir les autorisations requises, vous ne pouvez pas créer de ressources Amazon SWF ni y accéder.Par exemple, vous devez disposer d'autorisations pour appeler les cibles AWS Lambda, Amazon SimpleNotification Service (Amazon SNS) et Amazon Simple Queue Service (Amazon SQS) associées à vosrègles Amazon SWF.

Les sections suivantes décrivent comment gérer les autorisations pour Amazon SWF. Nous vousrecommandons de commencer par lire la présentation.

• Basic Principles (p. 76)• Amazon SWF IAM Policies (p. 77)• Amazon SWF Policy Examples (p. 78)

Basic PrinciplesLe contrôle d'accès Amazon SWF est principalement basé sur deux types d'autorisations :

• Resource permissions: Which Amazon SWF resources a user can access.

You can express resource permissions only for domains.• API permissions: Which Amazon SWF actions a user can call.

L'approche la plus simple consiste à accorder l'accès au compte complet—appeler n'importe quelle actionAmazon SWF de n'importe quel domaine—ou à refuser l'accès entièrement. Cependant, IAM offre uneméthode de contrôle d'accès plus précise et souvent plus utile. Par exemple, vous pouvez accorder lesaccès suivants :

• Allow a user to call any Amazon SWF action without restrictions, but only in a specified domain. Youcould use such a policy to allow workflow applications that are under development to use any action, butonly a "sandbox" domain.

• Allow a user to access any domain, but constrain how they use the API. You could use such a policy toallow an "auditor" application to call the API in any domain, but allow only read access.

• Allow a user to call only a limited set of actions in certain domains. You could use such a policy to allow aworkflow starter to call only the StartWorkflowExecution action in a specified domain.

Le contrôle d'accès Amazon SWF repose sur les principes suivants :

• Access control decisions are based only on IAM policies; all policy auditing and manipulation is donethrough IAM.

• The access control model uses a deny-by-default policy; any access that isn't explicitly allowed is denied.• You control access to Amazon SWF resources by attaching appropriate IAM policies to the workflow's

actors.• Resource permissions can be expressed only for domains.• You can further constrain the usage of some actions by applying conditions to one or more parameters.

Version de l'API 2012-01-2576

Page 83: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF IAM Policies

• If you grant permission to use RespondDecisionTaskCompleted, you can express permissions for the listof decisions included in that action.

Each of the decisions has one or more parameters, much like a regular API call. To allow for policies tobe as readable as possible, you can express permissions on decisions as if they were actual API calls,including applying conditions to some parameters. These types of permissions are called pseudo APIpermissions.

Pour afficher un résumé des paramètres qui peuvent être limités à l'aide de conditions pour l'API classiqueet la pseudo-API, consultez la section API Summary (p. 82).

Amazon SWF IAM PoliciesUne stratégie IAM contient un ou plusieurs éléments Statement, chacun comprenant un ensembled'éléments qui définissent la stratégie. Pour obtenir la liste complète des éléments et une descriptiongénérale de la manière de créer des stratégies, consultez Langage de la stratégie d'accès. Le contrôled'accès Amazon SWF est basé sur les éléments suivants :

Effet

(Obligatoire) L’effet de la déclaration : deny ou allow.Note

Vous devez autoriser explicitement l'accès. Par défaut, IAM refuse l'accès.Ressource :

(Obligatoire) Ressource—entité d'un service AWS avec laquelle un utilisateur peut interagir—à laquelles'applique l'instruction.

Vous pouvez uniquement exprimer des autorisations de ressources pour les domaines. Par exemple,une stratégie peut autoriser l'accès à seulement certains domaines de votre compte. Pour exprimerdes autorisations pour un domaine, définissez Resource au nom de ressource Amazon (ARN) dudomaine, qui a le format "arn:aws:swf :Region:AccountIDdomaineDomainName". Region est larégion AWS, AccountID est l’ID de compte sans tirets, et DomainName est le nom de domaine.

Action :

(Obligatoire) L’action que l’énoncé s’applique à, que vous consultez en utilisant le format suivant :serviceId:action. Pour Amazon SWF, ensemble serviceID vers swf. Par exemple,swf:StartWorkflowExecution fait référence au startworkflowexécution et est utilisé pour contrôlerles utilisateurs autorisés à démarrer les flux de travail.

Si vous accordez l'autorisation d'utiliser RespondDecisionTaskCompleted, vous pouvez égalementcontrôler l'accès à la liste des décisions incluse via Action afin d'exprimer les autorisations de lapseudo-API. Comme IAM refuse l'accès par défaut, la décision d'un décideur doit être explicitementautorisée pour être acceptée. Vous pouvez utiliser la valeur * pour autoriser toutes les décisions.

Condition :

(Facultatif) Exprime une contrainte au niveau d'un ou de plusieurs paramètres d'action, ce qui limite lesvaleurs acceptées.

Les actions Amazon SWF bénéficient souvent d'une grande latitude, que vous pouvez réduire à l'aidede conditions IAM. Par exemple, pour limiter les listes de tâches auxquelles l'action PollForActivityTaskpeut accéder, vous incluez une Condition et utilisez la clé swf:taskList.name pour spécifier leslistes autorisées.

Vous pouvez exprimer des contraintes pour les entités suivantes.• The workflow type. The name and version have separate keys.

Version de l'API 2012-01-2577

Page 84: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF IAM Policies

• The activity type. The name and version have separate keys.• Task lists.• Tags. You can specify multiple tags for some actions. In that case, each tag has a separate key.

Note

Pour Amazon SWF, les valeurs correspondent toutes à des chaînes. Dès lors, pour limiterun paramètre à une chaîne spécifiée, vous devez recourir à un opérateur de chaîne commeStringEquals. Toutefois, avec les opérateurs de comparaison de chaîne habituels commeStringEquals, toutes les requête doivent inclure le paramètre. Si vous n'incluez pas leparamètre explicitement et s'il n'existe aucune valeur par défaut, telle que la liste de tâchespar défaut fournie lors de l'enregistrement du type, l'accès est refusé.Il est souvent utile de traiter les conditions comme étant facultatives. De la sorte, vous pouvezappeler une action sans être obligé d'inclure le paramètre associé. Par exemple, vous pouvezautoriser un décideur à spécifier un ensemble de décisions RespondDecisionTaskCompletedtout en lui permettant de ne spécifier que l'une d'entre elles pour un appel particulier. Dans cecas, utilisez un opérateur StringEqualsIfExists pour limiter les paramètres appropriés,afin d'autoriser l'accès si le paramètre satisfait à la condition, sans toutefois refuser l'accès sile paramètre est absent.

Pour obtenir une liste complète des paramètres que vous pouvez restreindre et des clés associées,consultez la section API Summary (p. 82).

La section suivante fournit des exemples sur la façon de créer des stratégies Amazon SWF. Pour plusd'informations, consultez la section Conditions de chaîne.

Amazon SWF Policy ExamplesUn flux de travail se compose de plusieurs acteurs—activités, décideurs et ainsi de suite. Pour contrôlerl'accès de chaque acteur, vous devez associer une stratégie IAM appropriée. Cette section fournit quelquesexemples. L'exemple suivant illustre le cas le plus simple :

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/*" } ]}

Si vous associez cette stratégie à un acteur, celui-ci reçoit l'accès complet au compte dans toutes lesrégions. Vous pouvez utiliser des caractères génériques de sorte qu'une valeur unique représente plusieursressources, actions ou régions.

• The first wildcard (*) in the Resource value indicates that the resource permissions apply to all regions.To restrict permissions to a single region, replace the wildcard with the appropriate region string, such asus-east-1.

• The second wildcard (*) in the Resource value allows the actor to access any of the account's domainsin the specified regions.

• The wildcard (*) in the Action value allows the actor to call any Amazon SWF action.

Pour plus d'informations sur la façon d'utiliser les caractères génériques, consultez la page Descriptionsd'élément.

Les sections suivantes présentent des exemples de stratégies qui accordent des autorisations d'une façonplus précise.

Version de l'API 2012-01-2578

Page 85: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF IAM Policies

Domain Permissions

Si vous souhaitez limiter les flux de travail d'un service à un domaine particulier, vous pouvez utiliser uncode similaire à celui-ci :

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" } ]}

Si vous associez cette stratégie à un acteur, celui-ci peut appeler n'importe quelle action, mais seulementpour le domaine department1.

Si vous souhaitez permettre à un acteur d'accéder à plus d'un domaine, vous pouvez exprimer cetteautorisation pour chaque domaine séparément, comme suit :

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" }, { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ]}

Si vous associez cette stratégie à un acteur, celui-ci peut utiliser n'importe quelle action Amazon SWF desdomaines department1 et department2. Vous pouvez aussi parfois utiliser des caractères génériquespour représenter plusieurs domaines.

API Permissions and Constraints

L'élément Action vous permet de contrôler les actions qu'un acteur peut utiliser. Le cas échéant, vouspouvez limiter les paramètres autorisés de cette action via un élément Condition.

Si vous souhaitez restreindre l'accès de l'acteur à seulement certaines actions, vous pouvez utiliser uncode similaire à celui-ci :

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ]}

Si vous associez cette stratégie à un acteur, celui-ci peut appeler StartWorkflowExecution pour lancerles flux de travail dans le domaine department2. Il ne peut pas utiliser les autres actions ni lancer les fluxde travail dans les autres domaines.

Version de l'API 2012-01-2579

Page 86: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF IAM Policies

Pour restreindre davantage les flux de travail qu'un acteur peut lancer, limitez une ou plusieurs des valeursde paramètre StartWorkflowExecution, comme suit :

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1", "Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } } } ]}

Cette stratégie contraint les paramètres name et version de l'action StartWorkflowExecution. Sivous associez cette stratégie à un acteur, celui-ci peut uniquement exécuter la version2 de workflow1dans le domaine department1, et les deux paramètres doivent figurer dans la demande.

Pour limiter un paramètre sans nécessiter sa présence dans une requête, utilisez un opérateurStringEqualsIfExists, comme suit :

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } } } ]}

Cette stratégie permet à un acteur de choisir de spécifier une liste des tâches lors du démarrage d'uneexécution de flux de travail.

Vous pouvez limiter la liste des balises pour certaines actions. Dans ce cas, chaque balise dispose d'uneclé séparée. Dès lors, vous utilisez swf:tagList.member.0 pour limiter la première balise de la liste,swf:tagList.member.1 pour limiter la seconde, et ainsi de suite, jusqu'à un maximum de 5. Cependant,vous devez être prudent avec la méthode que vous utilisez pour limiter les listes de balises. Par exemple,voici un exemple de politique qui est not recommandé :

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } } } ]

Version de l'API 2012-01-2580

Page 87: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF IAM Policies

}

Cette politique vous permet de spécifier éventuellement some_ok_tag ou another_ok_tag. Cependant,cette politique limite uniquement le premier élément de la liste des balises. La liste pourrait contenir deséléments supplémentaires avec des valeurs arbitraires qui seraient toutes autorisées, car cette stratégien'applique aucune condition à swf:tagList.member.1, swf:tagList.member.2, etc.

Une solution à ce problème consiste à interdire l'utilisation de listes de balises. La stratégie suivantegarantit que seulement some_ok_tag ou another_ok_tag sont autorisés en imposant un seul élémentdans la liste.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } } } ]}

Pseudo API Permissions and ConstraintsSi vous souhaitez restreindre les décisions disponibles pour RespondDecisionTaskCompleted, vousdevez d’abord autoriser l’acteur à appeler RespondDecisionTaskCompleted. Vous pouvez ensuiteexprimer les autorisations pour les membres pseudo-API appropriés en utilisant la même syntaxe que pourl’API standard, comme suit :

{ "Version": "2012-10-17", "Statement" : [ { "Resource" : "arn:aws:swf:*:123456789012:/domain/*", "Action" : "swf:RespondDecisionTaskCompleted", "Effect" : "Allow" }, { "Resource" : "*", "Action" : "swf:ScheduleActivityTask", "Effect" : "Allow", "Condition" : { "StringEquals" : { "swf:activityType.name" : "SomeActivityType" } } } ]}

Si vous joignez cette politique à un acteur, le premier Statement permet à l’acteur d’appelerRespondDecisionTaskCompleted. Le deuxième élément permet à l’acteur d’utiliser leScheduleActivityTask décision de diriger Amazon SWF pour planifier une tâche d’activité. Pourpermettre toutes les décisions, remplacez « swf:ScheduleActivityTask » par « swf:* ».

Vous pouvez utiliser des opérateurs de condition pour limiter les paramètres, tout commeavec l'API classique. L'opérateur StringEquals de cette Condition autorise et obligeRespondDecisionTaskCompleted à planifier une tâche d'activité pour l'activité SomeActivityType. Sivous voulez autoriser RespondDecisionTaskCompleted à utiliser une valeur de paramètre sans qu'ellene soit obligatoire, vous pouvez utiliser l'opérateur StringEqualsIfExists à la place.

Version de l'API 2012-01-2581

Page 88: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAPI Summary

Service Model Limitations on IAM PoliciesLors de la création de stratégies IAM, vous devez tenir compte des limitations du modèle de service. Il estpossible de créer une stratégie IAM dont la syntaxe est valide, mais qui représente une demande AmazonSWF non valide. En effet, une demande autorisée en matière de contrôle d'accès peut tout de mêmeéchouer si elle n'est pas valide.

Par exemple, la politique suivante pour ListOpenWorkflowExecutions est not recommandé :

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:ListOpenWorkflowExecutions", "Resource" : "arn:aws:swf:*:123456789012:/domain/domain_name", "Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } } } ]}

Le modèle de service Amazon SWF n'autorise pas l'utilisation des paramètres typeFilter et tagFilterdans la même demande ListOpenWorkflowExecutions. Par conséquent, la stratégie autorise lesappels que le service refuse—en levant ValidationException— en tant que demande non valide.

API SummaryCette section décrit comment utiliser les stratégies IAM pour contrôler la façon dont un acteur utilise chaqueAPI et pseudo-API afin d'accéder aux ressources Amazon SWF.

• For all actions except RegisterDomain and ListDomains, you can allow or deny access to any or allof an account's domains by expressing permissions for the domain resource.

• You can allow or deny permission for any member of the regular API and, if you grant permission to callRespondDecisionTaskCompleted, any member of the pseudo API.

• You can use a Condition to constrain some parameters' allowable values.

Les sections suivantes répertorient les paramètres que vous pouvez limiter pour chaque membre de l'APIclassique ou de la pseudo-API. Elles fournissent également la clé associée et indiquent les limitations vouspermettant de contrôler l'accès au domaine.

Regular APICette section répertorie les membres de l'API classique et décrit brièvement les paramètres qui peuventêtre limités, ainsi que les clés associées. Elle indique également les limitations liées à la façon dont vouspouvez contrôler l'accès au domaine.

CountClosedWorkflowExecutions

• tagFilter.tag – String constraint. The key is swf:tagFilter.tag• typeFilter.name – String constraint. The key is swf:typeFilter.name.• typeFilter.version – String constraint. The key is swf:typeFilter.version.

Version de l'API 2012-01-2582

Page 89: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAPI Summary

Note

CountClosedWorkflowExecutions exige que typeFilter et tagFilter soientmutuellement exclusifs.

CountOpenWorkflowExecutions

• tagFilter.tag – String constraint. The key is swf:tagFilter.tag• typeFilter.name – String constraint. The key is swf:typeFilter.name.• typeFilter.version – String constraint. The key is swf:typeFilter.version.

Note

CountOpenWorkflowExecutions exige que typeFilter et tagFilter soient mutuellementexclusifs.

CountPendingActivityTasks

• taskList.name – String constraint. The key is swf:taskList.name.

CountPendingDecisionTasks

• taskList.name – String constraint. The key is swf:taskList.name.

DeprecateActivityType

• activityType.name – String constraint. The key is swf:activityType.name.• activityType.version – String constraint. The key is swf:activityType.version.

DeprecateDomain

• You can't constrain this action's parameters.

DeprecateWorkflowType

• workflowType.name – String constraint. The key is swf:workflowType.name.• workflowType.version – String constraint. The key is swf:workflowType.version.

DescribeActivityType

• activityType.name – String constraint. The key is swf:activityType.name.• activityType.version – String constraint. The key is swf:activityType.version.

DescribeDomain

• You can't constrain this action's parameters.

DescribeWorkflowExecution

• You can't constrain this action's parameters.

DescribeWorkflowType

Version de l'API 2012-01-2583

Page 90: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAPI Summary

• workflowType.name – String constraint. The key is swf:workflowType.name.• workflowType.version – String constraint. The key is swf:workflowType.version.

GetWorkflowExecutionHistory

• You can't constrain this action's parameters.

ListActivityTypes

• You can't constrain this action's parameters.

ListClosedWorkflowExecutions

• tagFilter.tag – String constraint. The key is swf:tagFilter.tag• typeFilter.name – String constraint. The key is swf:typeFilter.name.• typeFilter.version – String constraint. The key is swf:typeFilter.version.

Note

ListClosedWorkflowExecutions exige que typeFilter et tagFilter soient mutuellementexclusifs.

ListDomains

• You can't constrain this action's parameters.

ListOpenWorkflowExecutions

• tagFilter.tag – String constraint. The key is swf:tagFilter.tag• typeFilter.name – String constraint. The key is swf:typeFilter.name.• typeFilter.version – String constraint. The key is swf:typeFilter.version.

Note

ListOpenWorkflowExecutions exige que typeFilter et tagFilter soient mutuellementexclusifs.

ListWorkflowTypes

• You can't constrain this action's parameters.

PollForActivityTask

• taskList.name – String constraint. The key is swf:taskList.name.

PollForDecisionTask

• taskList.name – String constraint. The key is swf:taskList.name.

RecordActivityTaskHeartbeat

• You can't constrain this action's parameters.

Version de l'API 2012-01-2584

Page 91: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAPI Summary

RegisterActivityType

• defaultTaskList.name – String constraint. The key is swf:defaultTaskList.name.• name – String constraint. The key is swf:name.• version – String constraint. The key is swf:version.

RegisterDomain

• name – The name of the domain being registered is available as the resource of this action.

RegisterWorkflowType

• defaultTaskList.name – String constraint. The key is swf:defaultTaskList.name.• name – String constraint. The key is swf:name.• version – String constraint. The key is swf:version.

RequestCancelWorkflowExecution

• You can't constrain this action's parameters.

RespondActivityTaskCanceled

• You can't constrain this action's parameters.

RespondActivityTaskCompleted

• You can't constrain this action's parameters.

RespondActivityTaskFailed

• You can't constrain this action's parameters.

RespondDecisionTaskCompleted

• decisions.member.N – Restricted indirectly through pseudo API permissions. For details, see PseudoAPI (p. 86).

SignalWorkflowExecution

• You can't constrain this action's parameters.

StartWorkflowExecution

• tagList.member.0 – String constraint. The key is swf:tagList.member.0• tagList.member.1 – String constraint. The key is swf:tagList.member.1• tagList.member.2 – String constraint. The key is swf:tagList.member.2• tagList.member.3 – String constraint. The key is swf:tagList.member.3• tagList.member.4 – String constraint. The key is swf:tagList.member.4• taskList.name – String constraint. The key is swf:taskList.name.• workflowType.name – String constraint. The key is swf:workflowType.name.

Version de l'API 2012-01-2585

Page 92: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAPI Summary

• workflowType.version – String constraint. The key is swf:workflowType.version.

Note

Vous ne pouvez pas limiter plus de cinq balises.

TerminateWorkflowExecution

• You can't constrain this action's parameters.

Pseudo APICette section répertorie les membres de l’API pseudo, qui représentent les décisionsincluses dans RespondDecisionTaskCompleted. Si vous avez autorisé l’utilisationRespondDecisionTaskCompleted, votre politique peut exprimer des autorisations pour les membresde cette API de la même manière que l’API standard. Pour restreindre davantage certains membres de lapseudo-API, vous pouvez définir des conditions au niveau d'un ou de plusieurs paramètres. Cette sectionrépertorie les membres de la pseudo-API et décrit brièvement les paramètres qui peuvent être limités, ainsique les clés associées.

Note

Les clés aws:SourceIP, aws:UserAgent et aws:SecureTransport ne sont pas disponiblespour la pseudo-API. Si la stratégie de sécurité prévue nécessite que ces clés contrôlent l'accès àla pseudo-API, vous pouvez les utiliser avec l'action RespondDecisionTaskCompleted.

CancelTimer

• You can't constrain this action's parameters.

CancelWorkflowExecution

• You can't constrain this action's parameters.

CompleteWorkflowExecution

• You can't constrain this action's parameters.

ContinueAsNewWorkflowExecution

• tagList.member.0 – String constraint. The key is swf:tagList.member.0• tagList.member.1 – String constraint. The key is swf:tagList.member.1• tagList.member.2 – String constraint. The key is swf:tagList.member.2• tagList.member.3 – String constraint. The key is swf:tagList.member.3• tagList.member.4 – String constraint. The key is swf:tagList.member.4• taskList.name – String constraint. The key is swf:taskList.name.• workflowTypeVersion – String constraint. The key is swf:workflowTypeVersion.

Note

Vous ne pouvez pas limiter plus de cinq balises.

FailWorkflowExecution

• You can't constrain this action's parameters.

Version de l'API 2012-01-2586

Page 93: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurTag-based Policies

RecordMarker

• You can't constrain this action's parameters.

RequestCancelActivityTask

• You can't constrain this action's parameters.

RequestCancelExternalWorkflowExecution

• You can't constrain this action's parameters.

ScheduleActivityTask

• activityType.name – String constraint. The key is swf:activityType.name.• activityType.version – String constraint. The key is swf:activityType.version.• taskList.name – String constraint. The key is swf:taskList.name.

SignalExternalWorkflowExecution

• You can't constrain this action's parameters.

StartChildWorkflowExecution

• tagList.member.0 – String constraint. The key is swf:tagList.member.0• tagList.member.1 – String constraint. The key is swf:tagList.member.1• tagList.member.2 – String constraint. The key is swf:tagList.member.2• tagList.member.3 – String constraint. The key is swf:tagList.member.3• tagList.member.4 – String constraint. The key is swf:tagList.member.4• taskList.name – String constraint. The key is swf:taskList.name.• workflowType.name – String constraint. The key is swf:workflowType.name.• workflowType.version – String constraint. The key is swf:workflowType.version.

Note

Vous ne pouvez pas limiter plus de cinq balises.

StartTimer

• You can't constrain this action's parameters.

Tag-based PoliciesAmazon SWF prend en charge les stratégies basées sur les balises. Par exemple, vous pouvez limiter lesdomaines Amazon SWF qui incluent une balise avec la clé environment et la valeur production :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny",

Version de l'API 2012-01-2587

Page 94: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurJournalisation et surveillance dansAmazon Simple Workflow Service

"Action": "swf:*", "Resource": "arn:aws:swf:*:123456789012:/domain/*", "Condition": { "StringEquals": {"aws:ResourceTag/environment": "production"} } } ]}

Cette stratégie permettra de Deny l'accès à n'importe quel domaine qui a été balisé environment/production.

Pour plus d'informations sur le balisage, consultez :

• Balises (p. 64)• Controlling Access Using IAM Tags

Journalisation et surveillance dans Amazon SimpleWorkflow Service

Cette section fournit des informations sur la journalisation et la surveillance Amazon SWF.

Rubriques• Métriques Amazon SWF pour CloudWatch (p. 88)• Viewing Amazon SWF Metrics for CloudWatch using the AWS Management Console (p. 94)• Logging Amazon Simple Workflow Service API Calls with AWS CloudTrail (p. 97)

Métriques Amazon SWF pour CloudWatchAmazon SWF fournit maintenant les métriques pour CloudWatch et vous pouvez utiliser pour suivre lesflux de travail et les activités, et pour définir des alarmes par rapport aux seuils que vous choisissez. Vouspouvez afficher ces métriques via AWS Management Console. Pour plus d'informations, consultez ViewingAmazon SWF Metrics for CloudWatch using the AWS Management Console (p. 94).

Rubriques• Rapports des unités pour les métriques Amazon SWF (p. 88)• Métriques des événements d'API et de décision (p. 89)• Indicateurs Amazon SWF (p. 89)

Rapports des unités pour les métriques Amazon SWFMétriques qui indiquent un intervalle de temps

Certaines Amazon SWF metrics for CloudWatch sont des intervalles de temps, toujours mesurésen millisecondes. L'unité CloudWatch est présentée comme Time. Ces métriques correspondentgénéralement aux étapes d'exécution de flux de travail pour lesquelles vous pouvez définir des délaisd'activité et de flux de travail, et utiliser des noms similaires.

Par exemple, la métrique DecisionTaskStartToCloseTime mesure le temps nécessaire pour que latâche de décision soit menée à bien après le début de l'exécution, ce qui correspond à la période pourlaquelle vous pouvez définir une valeur DecisionTaskStartToCloseTimeout.

Version de l'API 2012-01-2588

Page 95: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMétriques Amazon SWF pour CloudWatch

Pour afficher le schéma de chacune de ces étapes et pour découvrir quand elles ont lieu dans le cycle devie des flux de travail et des activités, consultez la section Amazon SWF Types de délai (p. 143).

Métriques qui indiquent un nombreCertaines métriques Amazon SWF metrics for CloudWatch rapportent les résultats sous forme d'unnombre. Par exemple, WorkflowsCanceled enregistre le résultat sous la forme du numéro un ou zéropour indiquer si le flux de travail a été annulé ou non. Une valeur de zéro n'indique pas que cette métriquen'a pas été fournie, mais que la condition décrite par la métrique ne s'est pas produite.

Certaines métriques Amazon SWF metrics for CloudWatch qui rapportent un Count dans CloudWatch sontun nombre par seconde. Par exemple, ProvisionedRefillRate, qui est indiqué comme Count dansCloudWatch, représente un taux de Count demandes par seconde.

Pour les métriques chiffrées, le minimum et le maximum seront toujours zéro ou un, avec une valeur allantde zéro à un comme moyenne.

Métriques des événements d'API et de décisionVous pouvez surveiller les événements d'API et de décision dans CloudWatch afin d'obtenir desinformations sur votre utilisation et votre capacité. Consultez décideurs (p. 51) dans la sectionFonctionnement de Amazon SWF (p. 45), et la rubrique Décision dans Amazon Simple Workflow ServiceAPI Reference.

Vous pouvez également surveiller ces limites afin de déclencher des alarmes lorsque les limites AmazonSWF sont en passe d'être franchies. Consultez Amazon SWF throttling quotas (p. 137) pour obtenirune description de ces limites, ainsi que leurs paramètres par défaut. Ces limites sont conçues pourempêcher que des flux de travail incorrects utilisent des ressources système excessives. Pour demanderune augmentation de vos limites, consultez ??? (p. 142).

La bonne pratique consiste à configurer les alarmes CloudWatch à environ 60 % de la capacité de vosévénements d'API ou de décision. Vous pourrez ainsi ajuster votre flux de travail ou demander uneaugmentation de limite de service avant que la limite Amazon SWF ne soit atteinte. En fonction desvariations de vos appels, vous pouvez configurer différentes alarmes afin d'être averti lorsque vousapprochez les limites du service :

• Si votre trafic présente des pics importants, définissez une alarme à 60 % de vos limitesProvisionedBucketSize.

• Si vos appels sont relativement réguliers, définissez une alarme à 60 % de votre limiteProvisionedRefillRate pour les événements d'API et de décision associés.

Indicateurs Amazon SWFLes métriques suivantes sont disponibles pour Amazon SWF :

Métrique Description

DecisionTaskScheduleToStartTimeIntervalle de temps, en millisecondes, entre le moment où la tâchede décision a été planifiée et le moment où elle a été traitée par unemployé et démarrée.

CloudWatch Unités : Time

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Average, Minimum, Maximum

Version de l'API 2012-01-2589

Page 96: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMétriques Amazon SWF pour CloudWatch

Métrique Description

DecisionTaskStartToCloseTimeIntervalle de temps, en millisecondes, entre le moment où la tâche dedécision a été démarrée et le moment où elle a été clôturée.

CloudWatch Unités : Time

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Average, Minimum, Maximum

DecisionTasksCompleted Nombre de tâches de décision qui ont été effectuées.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

PendingTasks Nombre de tâches en attente dans un intervalle de 1 minute pour uneliste des tâches spécifique.

CloudWatch Unités : Count

Dimensions: Domain, TaskListName

Statistiques valides : Sum

StartedDecisionTasksTimedOutOnCloseNombre de tâches de décision qui ont été démarrées mais ayantexpiré à la clôture.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

WorkflowStartToCloseTime Durée, en millisecondes, entre le moment où le flux de travail adémarré et le moment où il a été clôturé.

CloudWatch Unités : Time

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Average, Minimum, Maximum

WorkflowsCanceled Nombre de flux de travail ayant été annulés.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

Version de l'API 2012-01-2590

Page 97: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMétriques Amazon SWF pour CloudWatch

Métrique Description

WorkflowsCompleted Nombre de flux de travail terminés.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

WorkflowsContinuedAsNew Nombre de flux de travail toujours considérés comme nouveaux.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

WorkflowsFailed Nombre de flux de travail ayant échoué.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

WorkflowsTerminated Nombre de flux de travail ayant été achevés.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

WorkflowsTimedOut Nombre de flux de travail ayant expiré, pour une raison quelconque.

CloudWatch Unités : Count

Dimensions: Domain, WorkflowTypeName,WorkflowTypeVersion

Statistiques valides : Sum

ActivityTaskScheduleToCloseTimeIntervalle de temps, en millisecondes, entre le moment où l'activité aété planifiée et le moment où elle est clôturée.

CloudWatch Unités : Time

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Average, Minimum, Maximum

Version de l'API 2012-01-2591

Page 98: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMétriques Amazon SWF pour CloudWatch

Métrique Description

ActivityTaskScheduleToStartTimeIntervalle de temps, en millisecondes, entre le moment où la tâched'activité a été planifiée et le moment où elle a été démarrée.

CloudWatch Unités : Time

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Average, Minimum, Maximum

ActivityTaskStartToCloseTimeIntervalle de temps, en millisecondes, entre le moment où la tâched'activité a été démarrée et le moment où elle a été clôturée.

CloudWatch Unités : Time

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Average, Minimum, Maximum

ActivityTasksCanceled Nombre de tâches d'activité ayant été annulées.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

ActivityTasksCompleted Nombre de tâches d'activité ayant été effectuées.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

ActivityTasksFailed Nombre de tâches d'activité ayant échoué.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

ScheduledActivityTasksTimedOutOnCloseNombre de tâches d'activité qui ont été planifiées mais ayant expirélors de la clôture.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

Version de l'API 2012-01-2592

Page 99: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMétriques Amazon SWF pour CloudWatch

Métrique Description

ScheduledActivityTasksTimedOutOnStartNombre de tâches d'activité qui ont été planifiées mais ayant expirélors du démarrage.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

StartedActivityTasksTimedOutOnCloseNombre de tâches d'activité qui ont été démarrées mais ayant expirélors de la clôture.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

StartedActivityTasksTimedOutOnHeartbeatNombre de tâches d'activité qui ont été démarrées mais ayant expiréen raison d'un délai d'attente des pulsations.

CloudWatch Unités : Count

Dimensions: Domain, ActivityTypeName,ActivityTypeVersion

Statistiques valides : Sum

ThrottledEvents Nombre de demandes ayant été limitées.

CloudWatch Unités : Count

Dimensions: APIName, DecisionName

Statistiques valides : Sum

ProvisionedBucketSize Nombre de demandes disponibles par seconde.

Dimensions: APIName, DecisionName

Statistiques valides : Minimum

ConsumedCapacity Nombre de demandes par seconde.

CloudWatch Unités : Count

Dimensions: APIName, DecisionName

Statistiques valides : Sum

ProvisionedRefillRate Nombre de demandes par seconde autorisées dans le compartiment.

Dimensions: APIName, DecisionName

Statistiques valides : Minimum

Version de l'API 2012-01-2593

Page 100: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurViewing Amazon SWF Metrics

Dimension Description

Domain Filtre les données vers le domaine Amazon SWF sur lequel s'exécutele flux de travail ou l'activité.

ActivityTypeName Filtre les données sur le nom du type d'activité.

ActivityTypeVersion Filtre les données sur la version du type d'activité.

WorkflowTypeName Filtre les données sur le nom du type de flux de travail pourl'exécution de ce flux de travail.

WorkflowTypeVersion Filtre les données sur la version du type de flux de travail pourl'exécution de ce flux de travail.

APIName Filtre les données sur une API correspondant au nom d'API spécifié.

DecisionName Filtre les données sur le nom de décision spécifié.

TaskListName Filtre les données sur le nom Liste des tâches spécifié.

Viewing Amazon SWF Metrics for CloudWatch usingthe AWS Management ConsoleAmazon CloudWatch fournit un certain nombre de métriques affichables pour les flux de travail et lesactivités Amazon SWF. Vous pouvez afficher ces métriques et définir des alarmes pour vos exécutionsde flux de travail Amazon SWF via AWS Management Console. You must be logged in to the console toproceed.

Pour obtenir une description de chacune des métriques disponibles, consultez la section MétriquesAmazon SWF pour CloudWatch (p. 88).

Rubriques• Viewing Metrics (p. 94)• Setting Alarms (p. 97)

Viewing MetricsPour afficher vos métriques pour Amazon SWF

1. Connectez-vous à la AWS Management Console et ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

2. Dans le volet de navigation, sous Métriques, choisissez SWF.

Version de l'API 2012-01-2594

Page 101: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurViewing Amazon SWF Metrics

Si vous exécutez récemment des exécutions de flux de travail, vous verrez deux listes de mesuresprésentées : Mesures du type de flux de travail et Mesures du type d’activité.

Note

Initialement, vous ne verrez peut-être que les métriques sur les types de flux de travail. Lesmétriques sur les types d'activité se trouvent dans la même vue, mais vous devrez peut-être fairedéfiler la page vers le bas pour les voir.

Jusqu'à 50 des métriques les plus récentes sont présentées à la fois, réparties entre les types de flux detravail et les types d'activité.

Vous pouvez utiliser les en-têtes interactifs au-dessus de chaque colonne de la liste pour trier les métriquesà l'aide d'un des attributs fournis. Pour les flux de travail, les dimensions sont Domain, WorkflowTypeName,WorkflowTypeVersion, et Metric Name. Pour les activités, les dimensions sont Domain, ActivityTypeName,ActivityTypeVersion, et Metric Name.

Version de l'API 2012-01-2595

Page 102: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurViewing Amazon SWF Metrics

Les différents types de métriques sont décrits dans Métriques Amazon SWF pour CloudWatch (p. 88).

Pour afficher les graphiques des métriques, cochez les cases à correspondantes dans la liste et modifiezles paramètres de graphique à l'aide des contrôles Time Range situés à droite de la vue graphique.

Pour plus d'informations sur les différents points du graphique, placez le curseur dessus. Le détail desattributs du point s'affichera.

Pour plus d'informations sur l'utilisation des métriques CloudWatch, consultez Affichage, représentationgraphique et publication des métriques dans Guide de l'utilisateur Amazon CloudWatch.

Version de l'API 2012-01-2596

Page 103: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLogging Amazon SWF API Calls with CloudTrail

Setting AlarmsVous pouvez utiliser les alarmes CloudWatch pour exécuter des actions telles que l'envoi d'une notificationlorsqu'un seuil d'alarme est atteint. Par exemple, vous pouvez définir une alarme afin d'envoyer unenotification à une rubrique SNS ou d'envoyer un e-mail lorsque la métrique WorkflowsFailed dépasseun certain seuil.

Pour définir une alarme pour l'une de vos métriques

1. Choisissez une seule métrique en sélectionnant sa case.2. A droite du graphique, dans les contrôles Tools, choisissez Create Alarm.3. Sur l'écran Define Alarm, saisissez la valeur du seuil d'alarme, les paramètres de temps et les actions

à effectuer.

Pour plus d'informations sur la configuration et l'utilisation des alarmes CloudWatch, consultez Créationd'alarmes Amazon CloudWatch dans Guide de l'utilisateur Amazon CloudWatch.

Logging Amazon Simple Workflow Service API Callswith AWS CloudTrailAmazon SWF est intégré à AWS CloudTrail, service qui fournit un enregistrement des actions réaliséespar un utilisateur, un rôle ou un service AWS dans Amazon SWF. CloudTrail capture tous les appels d'APIpour Amazon SWF en tant qu'événements. Les appels capturés incluent des appels de la console Amazon

Version de l'API 2012-01-2597

Page 104: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLogging Amazon SWF API Calls with CloudTrail

SWF et les appels de code vers les opérations d'API Amazon SWF. Si vous créez un journal de suivi,vous pouvez diffuser en continu les événements CloudTrail sur un compartiment Amazon S3, y comprisles événements pour Amazon SWF. Si vous ne configurez pas de journal de suivi, vous pouvez toujoursafficher les événements les plus récents dans la console CloudTrail dans Event history (Historique desévénements). À l'aide des informations collectées par CloudTrail, vous pouvez déterminer la demande quia été envoyée à Amazon SWF, l'adresse IP source à partir de laquelle la demande a été effectuée, l'auteurde la demande et la date de la demande, ainsi que d'autres informations.

Pour en savoir plus sur CloudTrail, y compris la façon de le configurer et de l'activer, consultez le AWSCloudTrail User Guide.

Amazon SWF Information in CloudTrailCloudTrail est activé sur votre compte AWS lorsque vous créez le compte. Quand une activité d'événementprise en charge a lieu dans Amazon SWF, elle est enregistrée dans un événement CloudTrail avec d'autresévénements de services AWS dans Event history (Historique des événements). Vous pouvez afficher,rechercher et télécharger les événements récents dans votre compte AWS. Pour plus d'informations,consultez Affichage des événements avec l'historique des événements CloudTrail.

Pour un enregistrement continu des événements dans votre compte AWS, y compris les événementspour Amazon SWF, créez un journal de suivi. A trail permet CloudTrail pour livrer des fichiers journauxà un Amazon S3 seau. Par défaut, lorsque vous créez un journal de suivi dans la console, il s'applique àtoutes les régions AWS. Le journal de suivi consigne les événements de toutes les régions dans la partitionAWS et livre les fichiers journaux dans le compartiment Amazon S3 de votre choix. En outre, vous pouvezconfigurer d'autres services AWS pour analyser plus en profondeur les données d'événements collectéesdans les journaux CloudTrail et agir sur celles-ci. Pour plus d'informations, consultez ce qui suit :

• Overview for Creating a Trail• CloudTrail Supported Services and Integrations• Configuring Amazon SNS Notifications for CloudTrail• Receiving CloudTrail Log Files from Multiple Regions and Receiving CloudTrail Log Files from Multiple

Accounts

Amazon SWF prend en charge la journalisation des actions suivantes en tant qu'événements dans lesfichiers journaux CloudTrail :

• DeprecateActivityType

• DeprecateDomain

• DeprecateWorkflowType

• RegisterActivityType

• RegisterDomain

• RegisterWorkflowType

Chaque événement ou entrée du journal contient des informations sur la personne qui a généré lademande. Les informations relatives à l'identité permettent de déterminer les éléments suivants :

• Whether the request was made with root or AWS Identity and Access Management (IAM) usercredentials.

• Whether the request was made with temporary security credentials for a role or federated user.• Whether the request was made by another AWS service.

Pour plus d'informations, consultez la section Élément userIdentity CloudTrail.

Version de l'API 2012-01-2598

Page 105: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLogging Amazon SWF API Calls with CloudTrail

Example: Amazon SWF Log File EntriesUn journal de suivi est une configuration qui active la livraison d'événements en tant que fichiers journauxà un compartiment Amazon S3 que vous spécifiez. Les fichiers journaux CloudTrail contiennent une ouplusieurs entrées de journal. Un événement représente une demande individuelle à partir d'une sourcequelconque et comprend des informations sur l'action demandée, sur tous les paramètres, les paramètresde la demande, etc. Les fichiers journaux CloudTrail ne sont pas des séries ordonnées retraçant les appelsd'API publics. Ils ne suivent aucun ordre précis.

DeprecateActivityType

Voici un exemple de journal CloudTrail pour DeprecateActivityType :

{ "eventVersion": "1.01", "eventID": "0f65b038-58ff-4d26-b1c7-eedff8db994b", "eventTime": "2014-05-07T22:45:36Z", "requestParameters": { "domain": "swf-example-domain", "activityType": { "version": "1.0", "name": "swf-example-activityType" } }, "responseElements": null, "awsRegion": "us-east-1", "eventName": "DeprecateActivityType", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816" }, "eventSource": "swf.amazonaws.com", "requestID": "4e1a8e94-d639-11e3-9a1c-4dbc5d9f1a49", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

DeprecateDomain

Voici un exemple de journal CloudTrail pour DeprecateDomain :

{ "eventVersion": "1.01", "eventID": "a2be5766-3d3a-4bd3-8b88-4f3582cb52bc", "eventTime": "2014-05-07T22:46:00Z", "requestParameters": { "name": "swf-example-domain" }, "responseElements": null, "awsRegion": "us-east-1", "eventName": "DeprecateDomain", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816"

Version de l'API 2012-01-2599

Page 106: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLogging Amazon SWF API Calls with CloudTrail

}, "eventSource": "swf.amazonaws.com", "requestID": "5c95ae06-d639-11e3-8836-a37995ed01ed", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

DeprecateWorkflowType

Voici un exemple de journal CloudTrail pour DeprecateWorkflowType :

{ "eventVersion": "1.01", "eventID": "ff6f4e8e-2401-4c1a-956a-f36dab55b22b", "eventTime": "2014-05-07T22:45:36Z", "requestParameters": { "domain": "swf-example-domain", "workflowType": { "version": "1.0", "name": "swf-example-workflowType" } }, "responseElements": null, "awsRegion": "us-east-1", "eventName": "DeprecateWorkflowType", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816" }, "eventSource": "swf.amazonaws.com", "requestID": "4df29420-d639-11e3-8836-a37995ed01ed", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

RegisterActivityType

Voici un exemple de journal CloudTrail pour RegisterActivityType :

{ "eventVersion": "1.01", "eventID": "d4a99e9e-a980-4e7a-9d84-7b00806ab70f", "eventTime": "2014-05-07T22:03:38Z", "requestParameters": { "domain": "swf-example-domain", "defaultTaskScheduleToStartTimeout": "60", "name": "swf-example-activityType", "defaultTaskStartToCloseTimeout": "120", "defaultTaskScheduleToCloseTimeout": "180", "version": "1.0", "defaultTaskList": { "name": "swf-tasklist" }, "description": "integration test" }, "responseElements": null, "awsRegion": "us-east-1",

Version de l'API 2012-01-25100

Page 107: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLogging Amazon SWF API Calls with CloudTrail

"eventName": "RegisterActivityType", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816" }, "eventSource": "swf.amazonaws.com", "requestID": "71811de3-d633-11e3-accd-9dbdf860ac2b", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

RegisterDomain

Voici un exemple de journal CloudTrail pour RegisterDomain :

{ "eventVersion": "1.01", "eventID": "e7e3c104-e748-4eda-90b5-827d44f4e459", "eventTime": "2014-05-07T22:03:38Z", "requestParameters": { "name": "swf-example-domain", "workflowExecutionRetentionPeriodInDays": "7", "description": "integration test domain" }, "responseElements": null, "awsRegion": "us-east-1", "eventName": "RegisterDomain", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816" }, "eventSource": "swf.amazonaws.com", "requestID": "7133729f-d633-11e3-860e-45859b92f1b2", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

RegisterWorkflowType

Voici un exemple de journal CloudTrail pour RegisterWorkflowType :

{ "eventVersion": "1.01", "eventID": "31d2b900-a0c1-41a9-a09b-d5c8a57087eb", "eventTime": "2014-05-07T22:03:38Z", "requestParameters": { "defaultExecutionStartToCloseTimeout": "180", "domain": "swf-example-domain", "name": "swf-example-workflowType", "defaultChildPolicy": "TERMINATE", "defaultTaskStartToCloseTimeout": "NONE", "version": "1.0", "defaultTaskList": { "name": "swf-tasklist"

Version de l'API 2012-01-25101

Page 108: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCompliance Validation

} }, "responseElements": null, "awsRegion": "us-east-1", "eventName": "RegisterWorkflowType", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "type": "Root", "arn": "arn:aws:iam::244806523816:root", "principalId": "244806523816", "accountId": "244806523816" }, "eventSource": "swf.amazonaws.com", "requestID": "71577518-d633-11e3-842e-67638fa0222f", "userAgent": "aws-sdk-java/unknown-version Linux/2.6.18-164.el5 Java_HotSpot(TM)_64-Bit_Server_VM/24.45-b08", "sourceIPAddress": "10.61.88.189"}

Compliance Validation for Amazon Simple WorkflowService

Des auditeurs tiers évaluent la sécurité et la conformité d'Amazon Simple Workflow Service dans le cadrede plusieurs programmes de conformité AWS. Il s'agit notamment des certifications SOC, PCI, FedRAMP,HIPAA et autres.

Pour obtenir la liste des services AWS relevant de programmes de conformité spécifiques, veuillezconsulter Services AWS dans Scope by Compliance Program. Pour obtenir des renseignements généraux,consultez Programmes de conformitéAWS .

Vous pouvez télécharger les rapports de l'audit externe avec AWS Artifact. Pour plus d'informations,consultez Téléchargement de rapports dans AWS Artifact.

Votre responsabilité en matière de conformité lorsque vous utilisez Amazon SWF est déterminée par lasensibilité de vos données, les objectifs de conformité de votre entreprise, ainsi que la législation et laréglementation en vigueur. AWS fournit les ressources suivantes pour faciliter le respect de la conformité :

• Security and Compliance Quick Start Guides – These deployment guides discuss architecturalconsiderations and provide steps for deploying security- and compliance-focused baseline environmentson AWS.

• Architecting for HIPAA Security and Compliance Whitepaper – This whitepaper describes howcompanies can use AWS to create HIPAA-compliant applications.

• AWS Compliance Resources – This collection of workbooks and guides might apply to your industry andlocation.

• Evaluating Resources with Rules in the AWS Config Developer Guide – The AWS Config serviceassesses how well your resource configurations comply with internal practices, industry guidelines, andregulations.

• AWS Security Hub – This AWS service provides a comprehensive view of your security state within AWSthat helps you check your compliance with security industry standards and best practices.

Resilience in Amazon Simple Workflow ServiceLe AWS infrastructure mondiale est construite AWS Régions et zones de disponibilité. AWS Les régionsfournissent plusieurs zones de disponibilité séparées physiquement et isolées, qui sont connectées à

Version de l'API 2012-01-25102

Page 109: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurInfrastructure Security

des réseaux à faible latence, à haut débit et hautement redondants. Avec les zones de disponibilité, vouspouvez concevoir et exploiter des applications et des bases de données qui basculent automatiquementd'une zone à l'autre sans interruption. Les zones de disponibilité sont plus hautement disponibles,tolérantes aux pannes et évolutives que les infrastructures traditionnelles à un ou plusieurs centres dedonnées.

Pour de plus amples d'informations sur les régions et les zones de disponibilité AWS, veuillez consulterInfrastructure mondiale d'AWS .

Outre l'infrastructure globale AWS, Amazon SWF propose plusieurs fonctionnalités qui contribuent à laprise en charge des vos besoins en matière de résilience et de sauvegarde de données.

Infrastructure Security in Amazon Simple WorkflowService

En tant que service géré, Amazon Simple Workflow Service est protégé par AWS procédures de sécuritédu réseau mondial décrites dans le Amazon Web Services: Présentation des processus de sécurité (livreblanc)

Vous utilisez les appels d'API publiés dans AWS pour accéder à Amazon SWF via le réseau. Les clientsdoivent prendre en charge le protocole TLS (Transport Layer Security) 1.0 ou version ultérieure. Nousrecommandons TLS 1.2 ou version ultérieure. Les clients doivent également prendre en charge les suitesde chiffrement PFS (Perfect Forward Secrecy) comme Ephemeral Diffie-Hellman (DHE) ou Elliptic CurveEphemeral Diffie-Hellman (ECDHE) La plupart des systèmes modernes telles que Java 7 et versionsultérieures prennent en charge ces modes.

En outre, les demandes doivent être signées à l'aide d'un ID de clé d'accès et d'une clé d'accès secrèteassociée à un mandataire IAM. Vous pouvez également utiliser AWS Security Token Service (AWS STS)pour générer des informations d'identification de sécurité temporaires et signer les demandes.

Vous pouvez appeler ces opérations d'API à partir de n'importe quel emplacement sur le réseau, maisAmazon SWF prend bel et bien en charge les stratégies d'accès basées sur les ressources, ce qui peutinclure des restrictions en fonction de l'adresse IP source. Vous pouvez également utiliser des stratégiesAmazon SWF pour contrôler l'accès à partir de points de terminaison Amazon Virtual Private Cloud(Amazon VPC) ou de VPC spécifiques. En effet, cela permet d'isoler l'accès réseau vers une ressourceAmazon SWF donnée depuis le VPC spécifique uniquement au sein du réseau AWS.

Configuration and Vulnerability Analysis in AmazonSimple Workflow Service

La configuration et les contrôles informatiques sont une responsabilité partagée entre AWS et vous, notreclient. Pour de plus amples informations, veuillez consulter AWS Modèle de responsabilité partagée.

Version de l'API 2012-01-25103

Page 110: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Utilisation de l'AWS CLI avecAmazon Simple Workflow Service

La plupart des fonctions de Amazon Simple Workflow Service sont accessibles à partir du AWS CLI. LeAWS CLI fournit une alternative à l'utilisation de Amazon SWF avec le AWS Management Console ou,dans certains cas, à la programmation avec l'API Amazon SWF et la AWS Flow Framework.

Par exemple, vous pouvez utiliser l'AWS CLI pour enregistrer un nouveau type de flux de travail :

aws swf register-workflow-type --domain MyDomain --name "MySimpleWorkflow" --workflow-version "v1"

Vous pouvez aussi afficher les types de flux de travail enregistrés :

aws swf list-workflow-types --domain MyDomain --registration-status REGISTERED

Vous trouverez ci-dessous un exemple de sortie par défaut au format JSON :

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1377471607.752, "workflowType": { "version": "v1", "name": "MySimpleWorkflow" } }, { "status": "REGISTERED", "creationDate": 1371454149.598, "description": "MyDomain subscribe workflow", "workflowType": { "version": "v3", "name": "subscribe" } } ]}

Les commandes Amazon SWF de l'AWS CLI offrent la possibilité de démarrer et de gérer les exécutionsde flux de travail, de rechercher les tâches d'activité, d'enregistrer des pulsations de tâches, et plusencore. Pour obtenir la liste complète des commandes Amazon SWF, avec la description des argumentsdisponibles et des exemples d'utilisation, consultez les commandes Amazon SWF dans le AWS CLICommand Reference.

Les commandes AWS CLI suivent l'API Amazon SWF étroitement. Par conséquent, vous pouvez utiliserla commande AWS CLI pour en savoir plus sur l'API Amazon SWF sous-jacente. Vous pouvez égalementutiliser vos connaissances existantes concernant l'API pour créer un prototype de code ou pour effectuerdes actions Amazon SWF sur la ligne de commande.

Pour plus d'informations sur AWS CLI, consultez AWS Command Line Interface Guide de l'utilisateur.

Version de l'API 2012-01-25104

Page 111: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurEnvoi de demandes d'HTTP

Working with Amazon SWF APIsEn plus des kits SDK AWS décrits dans la section Options de développement (p. 1), vous pouvez utiliserl'API HTTP directement.

Pour utiliser l'API, vous envoyez des requêtes HTTP au point de terminaison SWF qui correspond à larégion que vous souhaitez utiliser pour vos domaines, activités et flux de travail. Pour plus d'informationssur l'exécution de requêtes HTTP pour Amazon SWF, consultez Envoi de demandes HTTP à AmazonSWF (p. 105).

Cette section fournit des informations de base sur l'utilisation de l'API HTTP pour développer desflux de travail avec Amazon SWF. D'autres fonctionnalités avancées, telles que les temporisateurs,la journalisation avec CloudTrail et le balisage des flux de travail, sont décrites dans la sectionFonctionnement de Amazon SWF (p. 45).

Rubriques• Envoi de demandes HTTP à Amazon SWF (p. 105)• Liste des actions Amazon SWF par catégorie (p. 110)• Création d'un flux de travail de base dans Amazon SWF (p. 112)• Inscription d'un domaine avec Amazon SWF (p. 113)• Setting Timeout Values in Amazon SWF (p. 113)• Registering a Workflow Type with Amazon SWF (p. 115)• Enregistrement d'un type d'activité avec Amazon SWF (p. 115)• Tâches AWS Lambda (p. 116)• Développement d'un outil de traitement d'activité dans Amazon SWF (p. 120)• Développement de décideurs dans Amazon SWF (p. 123)• Lancement d'exécutions de flux de travail avec Amazon SWF (p. 128)• Définition de la priorité des tâches (p. 129)• Gestion des erreurs dans Amazon SWF (p. 132)

Envoi de demandes HTTP à Amazon SWFSi vous n'utilisez pas l'un des kits SDK AWS, vous pouvez effectuer des opérations Amazon SimpleWorkflow Service Amazon SWF via HTTP à l'aide de la méthode POST. La méthode POST nécessite quevous définissiez l'opération dans l'en-tête de la requête et que vous fournissiez les données de l'opérationau format JSON dans le corps de la requête.

Contenu de l'en-tête HTTPAmazon SWF nécessite les informations suivantes dans l'en-tête d'une demande HTTP :

• host Le point de terminaison Amazon SWF.• x-amz-date Vous devez fournir les informations d'horodatage soit dans l'en-tête Date HTTP, soit dans

l'en-tête x-amz-date header AWS (certaines bibliothèques de client HTTP ne permettent pas de

Version de l'API 2012-01-25105

Page 112: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurContenu de l'en-tête HTTP

définir l'en-tête Date). Lorsqu'un en-tête x-amz-date est présent, le système ignore tout en-tête Datelors de l'authentification de la demande.

La date doit être spécifiée dans l'un des formats suivants, comme indiqué dans le RFC HTTP/1.1 :• Sun, 06 Nov 1994 08:49:37 GMT (RFC 822, mis à jour par RFC 1123)• Sunday, 06-Nov-94 08:49:37 GMT (RFC 850, rendu obsolète par RFC 1036)• Dim 6 nov 08:49:37 1994 (format asctime() ANSI C)

• x-amzn-authorization Les paramètres de requête signés au format :

AWS3 AWSAccessKeyId=####,Algorithm=HmacSHA256, [,SignedHeaders=Header1;Header2;...]Signature=S(StringToSign)

AWS3 – Il s'agit d'une balise spécifique à l'implémentation d'AWS qui indique la version d'authentificationutilisée pour signer la demande (actuellement, pour Amazon SWF cette valeur est toujours AWS3).

AWSAccessKeyId – Votre ID de clé d'accès AWS.

Algorithm – L'algorithme utilisé pour créer la valeur HMAC-SHA de la chaîne de signature, commeHmacSHA256 ou HmacSHA1.

Signature – Base64( Algorithm( StringToSign, SigningKey ) ). Pour en savoir plus, consultez la sectionCalcul de la signature HMAC-SHA pour Amazon SWF (p. 108).

SignedHeaders – (Facultatif) Le cas échéant, ce paramètre doit comporter une liste de tous les en-têtes HTTP utilisés pour le calcul de la valeur HttpHeaders de base. Vous devez utiliser un point virgule(;) (caractère ASCII 59) pour délimiter les valeurs de la liste.

• x-amz-target – Service de destination de la demande et de l'opération sur les données, au format

com.amazonaws.swf.service.model.SimpleWorkflowService. + <action>

Par exemple,com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain

• content-type – Le type doit spécifier JSON et le jeu de caractères, sous la forme application/json; charset=UTF-8

Voici un exemple d'en-tête de requête HTTP utilisé pour créer un domaine.

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1Host: swf.us-east-1.amazonaws.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)Accept: application/json, text/javascript, */*Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveContent-Type: application/json; charset=UTF-8X-Requested-With: XMLHttpRequestX-Amz-Date: Fri, 13 Jan 2012 18:42:12 GMTX-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomainContent-Encoding: amz-1.0X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=tzjkF55lxAxPhzp/BRGFYQRQRq6CqrM254dTDE/EncI=Referer: http://swf.us-east-1.amazonaws.com/explorer/index.htmlContent-Length: 91Pragma: no-cache

Version de l'API 2012-01-25106

Page 113: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurContenu du corps HTTP

Cache-Control: no-cache

{"name": "867530902", "description": "music", "workflowExecutionRetentionPeriodInDays": "60"}

Voici un exemple de la réponse HTTP correspondante.

HTTP/1.1 200 OKContent-Length: 0Content-Type: application/jsonx-amzn-RequestId: 4ec4ac3f-3e16-11e1-9b11-7182192d0b57

Contenu du corps HTTPLe corps d'une requête HTTP contient les données de l'opération spécifiée dans l'en-tête de la requêteHTTP. Utilisez le format de données JSON pour transmettre simultanément les valeurs de données et lastructure de données. Pour imbriquer des éléments dans d'autres, utilisez la notation d'accolade. Voici, parexemple, une demande visant à afficher toutes les exécutions de flux de travail ayant commencé entre lesdeux points spécifiés dans le temps—avec le format horaire Unix.

{ "domain": "867530901", "startTimeFilter": { "oldestDate": 1325376070, "latestDate": 1356998399 }, "tagFilter": { "tag": "music purchase" }}

Exemple de demande et de réponse JSON AmazonSWFL'exemple suivant illustre l'envoi d'une demande à Amazon SWF pour afficher une description du domaineque nous avons créé précédemment. Puis, il affiche ensuite la réponse d'Amazon SWF.

Demande HTTP POST

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1Host: swf.us-east-1.amazonaws.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)Accept: application/json, text/javascript, */*Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveContent-Type: application/json; charset=UTF-8X-Requested-With: XMLHttpRequestX-Amz-Date: Sun, 15 Jan 2012 03:13:33 GMTX-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.DescribeDomain

Version de l'API 2012-01-25107

Page 114: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCalcul de la signature HMAC-SHA

Content-Encoding: amz-1.0X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=IFJtq3M366CHqMlTpyqYqd9z0ChCoKDC5SCJBsLifu4=Referer: http://swf.us-east-1.amazonaws.com/explorer/index.htmlContent-Length: 21Pragma: no-cacheCache-Control: no-cache

{"name": "867530901"}

Réponse d'Amazon SWF

HTTP/1.1 200 OKContent-Length: 137Content-Type: application/jsonx-amzn-RequestId: e86a6779-3f26-11e1-9a27-0760db01a4a8

{"configuration": {"workflowExecutionRetentionPeriodInDays": "60"}, "domainInfo": {"description": "music", "name": "867530901", "status": "REGISTERED"}}

Notez que le protocole (HTTP/1.1) est suivi d'un code d'état (200). La valeur 200 indique une opérationréussie.

Amazon SWF ne sérialise pas les valeurs null. Si votre analyseur JSON est configuré pour sérialiser lesvaleurs null pour les demandes, Amazon SWF les ignore.

Calcul de la signature HMAC-SHA pour Amazon SWFChaque demande envoyée à Amazon SWF doit être authentifiée. Les kits SDK AWS signentautomatiquement vos demandes et gère l'authentification par jeton. Toutefois, si vous souhaitez écrire vospropres demandes HTTP POST, vous devez créer une valeur x-amzn-authorization pour le contenude l'en-tête HTTP POST Header dans le cadre de l'authentification de votre demande.

Pour en savoir plus sur la mise en forme de ces en-têtes, consultez la section Contenu de l'en-têteHTTP (p. 105). Pour l'implémentation AWS SDK for Java de la signature d'AWS version 3, consultez laclasse AWSSigner.java.

Création d'une signature de demandeAvant de créer une signature de demande HMAC-SHA, vous devez obtenir vos informations d'identificationAWS (ID de clé d'accès et clé secrète).

Important

Vous pouvez utiliser SHA1 ou SHA256 pour signer vos demandes. Cependant, veillez à utiliserla même méthode pour tout le processus de signature. La méthode que vous choisissez doitcorrespondre à la valeur du nom Algorithm de l'en-tête HTTP.

Pour créer la signature de demande

1. Créez une forme canonique des en-têtes de requête HTTP. La forme canonique de l'en-tête HTTPcomprend les éléments suivants :

Version de l'API 2012-01-25108

Page 115: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCalcul de la signature HMAC-SHA

• host

• N'importe quel élément d'en-tête commençant par x-amz-

Pour en savoir plus sur les en-têtes inclus, consultez la section Contenu de l'en-tête HTTP (p. 105).

a. Pour chaque paire nom-valeur d'en-tête, convertissez le nom d'en-tête (pas la valeur d'en-tête) enminuscules.

b. Combinez les champs d'en-tête avec le même nom dans une paire « nom d'en-tête:liste devaleurs séparées par des virgules ».

x-amz-example: value1x-amz-example: value2 => x-amz-example:value1,value2

Pour en savoir plus, consultez la section 4.2 sur la page RFC 2616.c. Convertissez chaque paire nom-valeur d'en-tête en chaîne au format

headerName:headerValue. Supprimez les espaces de début et de fin des valeursheaderName et headerValue, et n'utilisez aucun espace de chaque côté des deux points.

x-amz-example1:value1,value2x-amz-example2:value3

d. Insérez une nouvelle ligne (U+000A) après chaque chaîne convertie, y compris la dernière chaîne.e. Triez la collection de chaînes converties dans l'ordre alphabétique par nom d'en-tête.

2. Créez une valeur de chaîne de connexion qui comprend les éléments suivants :

• Ligne 1 : la méthode HTTP (POST), suivie d'une nouvelle ligne.• Ligne 2 : l'URI de la demande (/), suivi d'une nouvelle ligne.• Ligne 3 : une chaîne vide suivie d'une nouvelle ligne.

Note

En règle générale, la chaîne de demande apparaît ici, mais Amazon SWF n'en utilise pas.• Ligne 4–n : la chaîne représentant les en-têtes de demandes canoniques calculés à l'étape 1, suivie

d'une nouvelle ligne. Cette nouvelle ligne crée une ligne vide entre les en-têtes et le corps de lademande HTTP. Pour plus d'informations, consultez RFC 2616.

• Le corps de la demande, non suivie d'une nouvelle ligne.3. Calculez le hachage SHA256 ou SHA1 de la valeur de chaîne de connexion. Utilisez la même

méthode SHA tout au long du processus.4. Calculez et encodez au format Base64 la signature HMAC-SHA via la valeur de hachage SHA256

ou SHA1 (selon la méthode que vous avez utilisée) de la valeur résultante de l'étape précédente etla clé d'accès secrète temporaire fournie par AWS Security Token Service à l'aide de l'action de l'APIGetSessionToken.

Note

Amazon SWF attend un signe égal (=) à la fin de la valeur HMAC-SHA codée en Base64. Sivotre routine d'encodage Base64 n'inclut pas l'ajout de signes égal, insérez-en un à la fin dela valeur.

Pour plus d'informations sur les informations d'identification de sécurité temporaires avec AmazonSWF et d'autres services AWS, consultez Services AWS qui fonctionnent avec IAM dans le IAM Guidede l'utilisateur.

5. Placez la valeur obtenue comme nom Signature dans l'en-tête x-amzn-authorization de lademande HTTP envoyée à Amazon SWF.

Version de l'API 2012-01-25109

Page 116: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurListe des actions Amazon SWF

6. Amazon SWF vérifie la demande et exécute l'opération spécifiée.

Liste des actions Amazon SWF par catégorieCette section répertorie les rubriques de référence des actions Amazon SWF dans l'interface deprogrammation d'application Amazon SWF (API). Elles sont classées par catégorie fonctionnelle.

Pour afficher une liste alphabétique des actions, consultez Amazon Simple Workflow Service APIReference.

Rubriques• Actions liées aux activités (p. 110)• Actions liées aux décideurs (p. 110)• Actions liées aux exécutions de flux de travail (p. 110)• Actions liées à l'administration (p. 111)• Actions de visibilité (p. 111)

Actions liées aux activitésLes travailleurs d'activité utilisent la commande PollForActivityTask pour obtenir les nouvellestâches d'activité. Après qu’un travailleur reçoit une tâche d'activité depuis Amazon SWF, il exécutela tâche et répond à l'aide de RespondActivityTaskCompleted en cas de succès ou deRespondActivityTaskFailed en cas d'échec.

Voici les actions exécutées par les outils de traitement d'activité.

• PollForActivityTask

• RespondActivityTaskCompleted

• RespondActivityTaskFailed

• RespondActivityTaskCanceled

• RecordActivityTaskHeartbeat

Actions liées aux décideursLes décideurs utilisent la commande PollForDecisionTask pour obtenir les tâches de décision. Aprèsqu'un décideur reçoit une tâche de décision depuis Amazon SWF, il examine l'historique d'exécution de sonflux de travail et décide comment procéder ensuite. Il appelle RespondDecisionTaskCompleted pourterminer la tâche de décision et fournit zéro ou plusieurs décisions suivantes.

Voici les actions exécutées par les décideurs.

• PollForDecisionTask

• RespondDecisionTaskCompleted

Actions liées aux exécutions de flux de travailLes actions suivantes font partie d'une exécution de flux de travail.

• RequestCancelWorkflowExecution

• StartWorkflowExecution

Version de l'API 2012-01-25110

Page 117: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurActions liées à l'administration

• SignalWorkflowExecution

• TerminateWorkflowExecution

Actions liées à l'administrationMême si vous pouvez exécuter des tâches administratives depuis la console Amazon SWF, vouspouvez utiliser les actions de cette section pour automatiser des fonctions ou créer vos propres outilsd'administration.

Gestion des activités• RegisterActivityType

• DeprecateActivityType

Gestion du flux de travail• RegisterWorkflowType

• DeprecateWorkflowType

Gestion de domaineCes actions vous permettent d'enregistrer des domaines Amazon SWF et de les rendre obsolètes.

• RegisterDomain

• DeprecateDomain

Pour obtenir plus d'informations, ainsi que des exemples de ces actions de gestion de domaine, consultezla section Inscription d'un domaine avec Amazon SWF (p. 113).

Gestion de l'exécution du flux de travail• RequestCancelWorkflowExecution

• TerminateWorkflowExecution

Actions de visibilitéMême si vous pouvez exécuter des actions de visibilité depuis la console Amazon SWF, vous pouvezutiliser les actions de cette section pour créer votre propre console ou vos outils d'administration.

Visibilité de l'activité• ListActivityTypes

• DescribeActivityType

Visibilité du flux de travail• ListWorkflowTypes• DescribeWorkflowType

Version de l'API 2012-01-25111

Page 118: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurCréation d'un flux de travail de base

Visibilité de l'exécution du flux de travail• DescribeWorkflowExecution

• ListOpenWorkflowExecutions

• ListClosedWorkflowExecutions

• CountOpenWorkflowExecutions

• CountClosedWorkflowExecutions

• GetWorkflowExecutionHistory

Visibilité du domaine• ListDomains

• DescribeDomain

Visibilité de la liste de tâches• CountPendingActivityTasks

• CountPendingDecisionTasks

Création d'un flux de travail de base dans AmazonSWF

La création d'un flux de travail séquentiel base implique les étapes suivantes.

• Modélisation d'un flux de travail et enregistrement de son type et de ses types d'activité• Développement et lancement des outils de traitement d'activité qui effectuent les tâches d'activité• Développement et lancement des décideurs qui utilisent l'historique du flux de travail pour déterminer

comment procéder ensuite• Développement et lancement des démarreurs de flux de travail (applications qui lancent les exécutions

de flux de travail)

Modélisation de votre flux de travail et de ses activitésPour utiliser Amazon SWF, modélisez les étapes logiques de votre application en tant qu'activités.Une activité représente une étape logique unique ou une tâche de votre flux de travail. Par exemple,l'autorisation d'une carte de crédit est une activité qui consiste à fournir un numéro de carte de crédit etd'autres informations, et à recevoir un code d'approbation ou un message indiquant que la carte a étérefusée.

Outre les activités, vous devez également définir la logique de coordination qui gère les points de décision.Par exemple, la logique de coordination peut planifier une activité de suivi différente selon que la carte decrédit a été approuvée ou refusée.

La figure suivante illustre un exemple de flux de travail séquentiel pour une commande client avecquatre activités (confirmation de la commande, débit de la carte de crédit, livraison de la commande etconsignation de l'achèvement de la tâche).

Version de l'API 2012-01-25112

Page 119: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurInscription d'un domaine

Inscription d'un domaine avec Amazon SWFVos types de flux de travail et d'activités, ainsi que l'exécution elle-même du flux de travail sont tous limitésà un domaine. Les domaines séparent un ensemble de types, d'exécutions et de listes de tâches desautres dans le même compte.

Pour enregistrer un domaine, utilisez AWS Management Console ou l'action RegisterDomain de l'APIAmazon SWF. L'exemple suivant utilise l'API.

https://swf.us-east-1.amazonaws.comRegisterDomain{ "name" : "867530901", "description" : "music", "workflowExecutionRetentionPeriodInDays" : "60"}

Les paramètres sont spécifiés au format JavaScript Objet Notation (JSON). Ici, la période de conservationest définie sur 60 jours. Au cours de la période de conservation, toutes les informations sur l'exécution duflux de travail sont disponibles via des opérations de visibilité à l'aide d'AWS Management Console ou del'API Amazon SWF.

Après l'enregistrement du domaine, vous devez enregistrer le type de flux de travail et les types d'activitéutilisés par le flux de travail. Vous devez tout d'abord enregistrer le domaine, car l'enregistrement d'un nomde domaine est nécessaire à l'enregistrement des types de flux de travail et d'activités.

Voir aussiRegisterDomain dans Amazon Simple Workflow Service API Reference.

Setting Timeout Values in Amazon SWFRubriques

• Quotas on Timeout Values (p. 114)• Workflow Execution and Decision Task Timeouts (p. 114)• Activity Task Timeouts (p. 114)• See Also (p. 115)

Version de l'API 2012-01-25113

Page 120: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurQuotas on Timeout Values

Quotas on Timeout ValuesLes valeurs de délai sont toujours déclarées en secondes et peuvent comprendre jusqu'à31536000 secondes (un an)—durée maximale d'exécution d'une activité ou d'un flux de travail. La valeurspéciale NONE permet de définir un paramètre de délai « sans délai », ou infini, mais la durée maximaled'une année continue à s'appliquer.

Workflow Execution and Decision Task TimeoutsVous pouvez définir des valeurs de délai pour le flux de travail et les tâches de décision lorsque vousenregistrez le type de flux de travail. Par exemple,

https://swf.us-east-1.amazonaws.comRegisterWorkflowType{ "domain": "867530901", "name": "customerOrderWorkflow", "version": "1.0", "description": "Handle customer orders", "defaultTaskStartToCloseTimeout": "600", "defaultExecutionStartToCloseTimeout": "3600", "defaultTaskList": { "name": "mainTaskList" }, "defaultChildPolicy": "TERMINATE"}

Cet enregistrement définit la valeur defaultTaskStartToCloseTimeout sur 600 secondes(10 minutes), et defaultExecutionStartToCloseTimeout sur 3 600 secondes (1 heure).

Pour plus d'informations sur l'enregistrement du type de flux de travail, consultez Registering a WorkflowType with Amazon SWF (p. 115), ainsi que RegisterWorkflowType dans Amazon Simple WorkflowService API Reference.

Pour remplacer la valeur définie pour defaultExecutionStartToCloseTimeout, spécifiezexecutionStartToCloseTimeout .

Activity Task TimeoutsVous pouvez définir des valeurs de délai pour les tâches d'activité lors de l'enregistrement du typed'activité. Par exemple,

https://swf.us-east-1.amazonaws.comRegisterActivityType{ "domain": "867530901", "name": "activityVerify", "version": "1.0", "description": "Verify the customer credit", "defaultTaskStartToCloseTimeout": "600", "defaultTaskHeartbeatTimeout": "120", "defaultTaskList": { "name": "mainTaskList" }, "defaultTaskScheduleToStartTimeout": "1800", "defaultTaskScheduleToCloseTimeout": "5400"}

Cet enregistrement de type d'activité définit la valeur defaultTaskStartToCloseTimeoutsur 600 secondes (10 minutes), defaultTaskHeartbeatTimeout sur 120 secondes(2 minutes), defaultTaskScheduleToStartTimeout sur 1 800 secondes (30 minutes) etdefaultTaskScheduleToCloseTimeout sur 5 400 secondes (1,5 heure).

Version de l'API 2012-01-25114

Page 121: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurSee Also

Pour plus d'informations sur l'enregistrement du type d'activité, consultez Enregistrement d'un typed'activité avec Amazon SWF (p. 115), ainsi que RegisterActivityType dans Amazon SimpleWorkflow Service API Reference.

Pour remplacer la valeur définie pour defaultTaskStartToCloseTimeout spécifieztaskStartToCloseTimeout lors de la planification de la tâche d'activité.

See AlsoAmazon SWF Types de délai (p. 143)

Registering a Workflow Type with Amazon SWFL'exemple abordé dans cette section enregistre un type de flux de travail via l'API Amazon SWF. Le nom etla version que vous spécifiez lors de l'enregistrement forment un identifiant unique pour le type de flux detravail. Le domaine défini doit être enregistré au préalable à l'aide de l'action d'API RegisterDomain.

Les paramètres de délai d'attente de l'exemple suivant sont des valeurs de durée définies en secondes.Pour le paramètre defaultTaskStartToCloseTimeout, vous pouvez utiliser le spécificateur dedurée NONE pour n'indiquer aucun délai d'attente. Cependant, vous ne pouvez pas spécifier la valeurNONE pour defaultExecutionStartToCloseTimeout. La durée d'exécution d'un flux de travail estlimitée à un an. Passé ce délai, cette limite entraîne toujours l'expiration de l'exécution du flux de travail.Si vous spécifiez une valeur supérieure à un an pour defaultExecutionStartToCloseTimeout,l'enregistrement échoue.

https://swf.us-east-1.amazonaws.comRegisterWorkflowType{ "domain" : "867530901", "name" : "customerOrderWorkflow", "version" : "1.0", "description" : "Handle customer orders", "defaultTaskStartToCloseTimeout" : "600", "defaultExecutionStartToCloseTimeout" : "3600", "defaultTaskList" : { "name": "mainTaskList" }, "defaultChildPolicy" : "TERMINATE"}

See AlsoRegisterWorkflowType dans Amazon Simple Workflow Service API Reference

Enregistrement d'un type d'activité avec AmazonSWF

L'exemple suivant enregistre un type d'activité via l'API Amazon SWF. Le nom et la version que vousspécifiez lors de l'enregistrement forment un identifiant unique pour le type d'activité au sein du domaine.Le domaine défini doit être enregistré au préalable à l'aide de l'action RegisterDomain.

Les paramètres de délai de cet exemple sont des durées spécifiées en secondes. Vous pouvez utiliser lespécificateur de durée NONE pour indiquer qu'aucun délai ne s'applique.

https://swf.us-east-1.amazonaws.comRegisterActivityType

Version de l'API 2012-01-25115

Page 122: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurVoir aussi

{ "domain" : "867530901", "name" : "activityVerify", "version" : "1.0", "description" : "Verify the customer credit", "defaultTaskStartToCloseTimeout" : "600", "defaultTaskHeartbeatTimeout" : "120", "defaultTaskList" : { "name" : "mainTaskList" }, "defaultTaskScheduleToStartTimeout" : "1800", "defaultTaskScheduleToCloseTimeout" : "5400"}

Voir aussiRegisterActivityType dans le Amazon Simple Workflow Service API Reference

Tâches AWS LambdaRubriques

• À propos d'AWS Lambda (p. 116)• Avantages et limites inhérents à l'utilisation des tâches Lambda (p. 116)• Utilisation de tâches Lambda dans vos flux de travail (p. 117)

À propos d'AWS LambdaAWS Lambda est un service de calcul entièrement géré qui exécute votre code en réponse à desévénements générés par le code personnalisé ou à partir de divers services AWS comme Amazon S3,DynamoDB, Amazon Kinesis, Amazon SNS et Amazon Cognito. Pour plus d'informations sur Lambda,consultez AWS Lambda Developer Guide.

Amazon Simple Workflow Service fournit une tâche Lambda pour vous permettre d'exécuter des fonctionsLambda au lieu des activités Amazon SWF habituelles ou en parallèle à celles-ci.

Important

Votre compte AWS sera facturé pour les exécutions (demandes) Lambda effectuées par AmazonSWF en votre nom. Pour plus d'informations sur la tarification Lambda, rendez-vous sur http://aws.amazon.com/lambda/pricing/.

Avantages et limites inhérents à l'utilisation des tâchesLambdaL'utilisation de tâches Lambda présente plusieurs avantages par rapport à une activité Amazon SWFtraditionnelle :

• Contrairement aux types d'activités Amazon SWF, les tâches Lambda n'ont pas besoin d'êtreenregistrées ou versionnées.

• Vous pouvez utiliser n'importe quelle fonction Lambda déjà définie dans vos flux de travail.• Les fonctions lambda sont appelées directement par Amazon SWF. Vous n'avez donc pas besoin de

mettre en œuvre un programme de travail pour les exécuter, comme c'est le cas avec les activitéstraditionnelles.

• Lambda fournit des métriques et des fichiers journaux pour le suivi et l'analyse des exécutions defonctions.

Version de l'API 2012-01-25116

Page 123: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurUtilisation de tâches Lambda dans vos flux de travail

Vous devez également connaître les quelques limites qui s'appliquent aux tâches Lambda :

• Les tâches Lambda peuvent uniquement être exécutées dans les régions AWS qui prennent en chargeLambda. Pour plus d'informations sur les régions compatibles avec Lambda, consultez la sectionLambda Régions et points de terminaison dans la Référence générale Amazon Web Services.

• Actuellement, les tâches Lambda sont uniquement prises en charge par l'API HTTP SWF de base etdans AWS Flow Framework pour Java. AWS Flow Framework pour Ruby ne prend pas actuellement encharge les tâches Lambda.

Utilisation de tâches Lambda dans vos flux de travailPour utiliser des tâches Lambda dans vos flux de travail Amazon SWF, procédez comme suit :

1. Configurez des rôles IAM pour permettre à Amazon SWF d'appeler les fonctions Lambda.2. Attachez les rôles IAM à vos flux de travail.3. Appelez la fonction Lambda pendant une exécution de flux de travail.

Configuration d'un rôle IAMAvant de pouvoir appeler des fonctions Lambdadepuis Amazon SWF, vous devez fournir un rôle IAM quiassure l'accès à Lambda depuis Amazon SWF. Vous avez le choix entre les options suivantes :

• pour choisir un rôle prédéfini, afin AWSLambdaRole de donner à vos flux de travail l'autorisationd'appeler n'importe quelle Lambda fonction associée à votre compte .

• Définissez votre propre stratégie et le rôle associé pour autoriser les flux de travail à appeler desfonctions Lambda particulières, en fonction de leur Amazon Resource Name (ARN).

Donner à Amazon SWF les autorisations d'accès requises pour appeler un rôleLambda

Vous pouvez utiliser le rôle prédéfini, AWSLambdaRole , pour donner à vos Amazon SWF flux de travailla possibilité d'appeler n'importe quelle Lambda fonction associée à votre compte .

Pour utiliser AWSLambdaRole pour donner à Amazon SWF l'accès aux Lambda fonctions d'appel

1. Ouvrez la console Amazon IAM.2. Choisissez Rôles, puis Créer un rôle.3. Attribuez un nom à votre rôle, tel que swf-lambda, puis choisissez Étape suivante.4. Sous Rôles de service AWS, choisissez Amazon SWF, puis Étape suivante.5. Sur l'écran Attacher la stratégie, choisissez AWSLambdaRole dans la liste.6. Choisissez Étape suivante, puis Créer un rôle une fois que vous avez vérifié le rôle.

Définition d'un rôle IAM afin de donner les autorisations d'accès requises pourappeler une fonction Lambda spécifique

Si vous voulez fournir un accès permettant d'appeler une fonction Lambda spécifique à partir de votre fluxde travail, vous devez définir votre propre stratégie IAM.

Pour créer une stratégie IAM afin de fournir l'accès à une fonction Lambda spécifique

1. Ouvrez la console Amazon IAM.

Version de l'API 2012-01-25117

Page 124: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurUtilisation de tâches Lambda dans vos flux de travail

2. Choisissez Stratégies, puis Créer une stratégie.3. Choisissez Copy an AWS Managed Policy et sélectionnez AWSLambdaRole dans la liste. Une

stratégie sera générée pour vous. Au besoin, modifiez son nom et sa description.4. Dans le champ Ressource du document de stratégie, ajoutez l'ARN des fonctions Lambda. Exemple :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111111000000:function:hello_lambda_function" ] } ]}

Note

Pour une description complète de la procédure à suivre pour spécifier les ressources dansun rôle IAM, consultez la section Présentation des stratégies IAM dans la rubrique Utilisationd'IAM.

5. Choisissez Créer une stratégie afin de finaliser la création de la stratégie.

Vous pourrez ensuite sélectionner cette stratégie lors de la création d'un rôle IAM et utiliser ce dernier pourdonner les autorisations d'accès requises afin d'appeler vos flux de travail Amazon SWF. Cette procédureest très similaire à la création d'un rôle avec la AWSLambdaRole stratégie. Choisissez plutôt votre proprestratégie lors de la création du rôle.

Pour créer un rôle Amazon SWF à l'aide de la stratégie Lambda

1. Ouvrez la console Amazon IAM.2. Choisissez Rôles, puis Créer un rôle.3. Attribuez un nom à votre rôle, tel que swf-lambda-function, puis choisissez Étape suivante.4. Sous Rôles de service AWS, choisissez Amazon SWF, puis Étape suivante.5. Sur l'écran Attach Policy, sélectionnez la stratégie spécifique aux fonctions Lambda dans la liste.6. Choisissez Étape suivante, puis Créer un rôle une fois que vous avez vérifié le rôle.

Attacher le rôle IAM à votre flux de travailUne fois que vous avez défini le rôle IAM, vous devez l'attacher au flux de travail qui l'utilisera pour appelerles fonctions Lambda auxquelles Amazon SWF peut accéder.

Vous pouvez attacher le rôle au flux de travail à deux niveaux :

• Lors de l'enregistrement de type de flux de travail. Ce rôle pourra ensuite être utilisé comme rôle Lambdapar défaut pour chaque exécution de ce type de flux de travail.

• Lors du lancement d'une exécution de flux de travail. Ce rôle sera utilisé uniquement au cours del'exécution de ce flux de travail (et tout au long de l'exécution).

Version de l'API 2012-01-25118

Page 125: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurUtilisation de tâches Lambda dans vos flux de travail

Pour fournir un rôle Lambda par défaut pour un type de flux de travail

• Lorsque vous appelez RegisterWorkflowType, indiquez l'ARN du rôle que vous avez défini dans lechamp defaultLambdaRole.

Pour fournir un rôle Lambda à utiliser pendant une exécution de flux de travail

• Lorsque vous appelez StartWorkflowExecution, indiquez l'ARN du rôle que vous avez défini dans lechamp lambdaRole.

Note

Si le compte qui appelle RegisterWorkflowType ou StartWorkflowExecution n'a pas l'autorisationd'utiliser le rôle donné, l'appel échoue avec l'erreur OperationNotPermittedFault.

Appeler votre fonction Lambda à partir d'un flux de travailAmazon SWFVous pouvez utiliser le type de données ScheduleLambdaFunctionDecisionAttributes pour identifier lafonction Lambda à appeler pendant une exécution de flux de travail.

Au cours d'un appel à RespondDecisionTaskCompleted, fournissez le paramètreScheduleLambdaFunctionDecisionAttributes à la liste de décisions. Par exemple :

{ "decisions": [{ "ScheduleLambdaFunctionDecisionAttributes": { "id": "lambdaTaskId", "name": "myLambdaFunctionName", "input": "inputToLambdaFunction", "startToCloseTimeout": "30" }, }],}

Définissez les paramètres suivants :

• ID avec un identifiant pour la tâche Lambda. Il doit s'agir d'une chaîne qui contient entre 1 et256 caractères, sans les caractères : (deux points), / (barre oblique), | (barre verticale) ni les caractèresde contrôle (\u0000 - \u001f et \u007f - \u009f), ni la chaîne littérale arn.

• nom avec le nom de votre fonction Lambda. Vous devez fournir un rôle IAM au flux de travail AmazonSWF pour lui donner les autorisations requises pour appeler la fonction Lambda. Le nom indiqué doitrespecter les contraintes du paramètre FunctionName, comme dans l'action Lambda Invoke.

• input avec les données d'entrée facultatives de la fonction. Si cette valeur est définie, elle doit respecterles contraintes du paramètre ClientContext comme dans l'action Lambda Invoke.

• startToCloseTimeout avec la durée maximale, en secondes, que la fonction peut prendre pour s'exécuteravant que la tâche n'échoue pour cause d'expiration du délai. Cette option est facultative. La valeurNONE peut être utilisée pour spécifier une durée illimitée.

Pour plus d'informations, consultez Implémentation des tâches AWS Lambda.

Version de l'API 2012-01-25119

Page 126: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéveloppement d'un outil de traitement d'activité

Développement d'un outil de traitement d'activitédans Amazon SWF

Un outil de traitement d'activité fournit l'implémentation d'un ou de plusieurs types d'activités. Ilcommunique avec Amazon SWF pour recevoir les tâches de l'activité et les exécuter. Plusieurs outils detraitement d'activité peuvent réaliser des tâches dont le type d'activité est le même.

Amazon SWF rend une tâche d'activité accessible par les outils de traitement d'activité lorsque le décideurplanifie cette dernière. Dès qu'un décideur planifie une tâche d'activité, il fournit les données (que vousdéterminez) dont l'outil de traitement d'activité a besoin pour effectuer la tâche d'activité. Amazon SWFinsère ces données dans la tâche d'activité avant de l'envoyer à l'outil de traitement de l'activité.

Les outils de traitement d'activité sont gérés par vous. Ils peuvent être écrits dans n'importe quel langage.Un outil de traitement peut être exécuté n'importe où, tant qu'il peut communiquer avec Amazon SWFvia l'API. Comme Amazon SWF fournit toutes les informations nécessaires pour effectuer une tâched'activité, tous les outils de traitement d'activité peuvent être sans état. L'absence d'état permet aux flux detravail d'être hautement évolutifs. Pour gérer les besoins accrus en capacité, il suffit d'ajouter des outils detraitement d'activité.

Cette section explique comment mettre en œuvre un outil de traitement d'activité. Les outils de traitementd'activité doivent régulièrement effectuer les opérations suivantes.

1. Interrogez Amazon SWF pour obtenir une tâche d'activité.2. Commencer l'exécution de la tâche3. Signalez régulièrement une pulsation à Amazon SWF si la durée de vie de la tâche est longue.4. Signalez que la tâche a abouti ou échoué, et renvoyez les résultats à Amazon SWF.

Rubriques• Recherche de tâches d'activité (p. 120)• Réalisation de la tâche d'activité (p. 121)• Création de rapports sur les pulsations des tâches d'activité (p. 121)• Réussite ou échec d'une tâche d'activité (p. 122)• Lancement des outils de traitement d'activité (p. 123)

Recherche de tâches d'activitéPour exécuter les tâches d'activité, chaque outil de traitement d'activité doit les rechercher régulièrementdans Amazon SWF en appelant l'action PollForActivityTask.

Dans l'exemple suivant, l'outil de traitement d'activité ChargeCreditCardWorker01 recherche une tâchedans la liste des tâches, ChargeCreditCard-v0.1. Si aucune tâche d'activité n'est disponible, au boutde 60 secondes, Amazon SWF renvoie une réponse vide. Une réponse vide est une structure Task danslaquelle la valeur taskToken est une chaîne vide.

https://swf.us-east-1.amazonaws.comPollForActivityTask{ "domain" : "867530901", "taskList" : { "name": "ChargeCreditCard-v0.1" }, "identity" : "ChargeCreditCardWorker01"

Version de l'API 2012-01-25120

Page 127: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRéalisation de la tâche d'activité

}

Si une tâche d'activité devient disponible, Amazon SWF la retourne à l'outil de traitement d'activité. Latâche contient les données que le décideur spécifie quand il planifie l'activité.

Une fois qu'un outil de traitement d'activité reçoit une tâche d'activité, il peut l'effectuer. La section suivantedécrit comment réaliser une tâche d'activité.

Réalisation de la tâche d'activitéAprès avoir reçu une tâche d'activité, l'outil de traitement d'activité est prêt à l'exécuter.

Pour effectuer une tâche d'activité

1. Programmez l'outil de traitement d'activité pour interpréter le contenu du champ d'entrée de la tâche.Ce champ contient les données spécifiées par le décideur lorsque la tâche a été programmée.

2. Programmez l'outil de traitement d'activité pour commencer à traiter les données et à exécuter votrelogique.

La section suivante décrit comment programmer les outils de traitement d'activité afin de fournir des misesà jour de l'état à Amazon SWF pour les activités de longue durée.

Création de rapports sur les pulsations des tâchesd'activitéSi un délai de pulsation a été associé au type d'activité, l'outil de traitement d'activité doit enregistrer unepulsation avant que ce délai n'expire. Si une tâche d'activité ne fournit pas de pulsation dans le délaid'attente, la tâche expire, puis Amazon SWF la ferme et planifie une nouvelle tâche de décision pourinformer un décideur de l'expiration. Le décideur peut ensuite replanifier la tâche d'activité ou effectuer uneautre action.

Si, après expiration, l'outil de traitement d'activité tente de contacter Amazon SWF, par exemple enappelant RespondActivityTaskCompleted, Amazon SWF renvoie une erreur UnknownResource.

Cette section décrit comment fournir une pulsation d'activité.

Pour enregistrer une pulsation pour la tâche d'activité, programmez l'outil de traitement d'activité pourappeler l'action RecordActivityTaskHeartbeat. Cette action fournit également un champ de chaîneque vous pouvez utiliser pour stocker les données de forme libre afin de quantifier la progression de lafaçon qui convient à votre application.

Dans cet exemple, l'outil de traitement d'activité signale une pulsation à Amazon SWF et utilise le champdes détails pour indiquer que la tâche d'activité est achevé à 40 %. Pour signaler la pulsation, l'outil detraitement d'activité doit spécifier le jeton de la tâche d'activité.

https://swf.us-east-1.amazonaws.comRecordActivityTaskHeartbeat{ "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "details" : "40"}

Cette action ne crée pas en soi un événement dans l'historique d'exécution du flux de travail. Toutefois, sila tâche expire, l'historique d'exécution du flux de travail contient un événement ActivityTaskTimedOutqui comprend les informations provenant de la dernière pulsation générée par l'outil de traitement d'activité.

Version de l'API 2012-01-25121

Page 128: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRéussite ou échec d'une tâche d'activité

Réussite ou échec d'une tâche d'activitéAprès l'exécution d'une tâche, l'outil de traitement d'activité doit indiquer si celle-ci a réussi ou échoué.

Finalisation d'une tâche d'activitéPour finaliser une tâche d'activité, programmez l'outil de traitement d'activité pour appeler l'actionRespondActivityTaskCompleted une fois que la tâche d'activité aboutit, en spécifiant le jetoncorrespondant.

Dans cet exemple, l'outil de traitement d'activité indique que la tâche s'est correctement déroulée.

https://swf.us-east-1.amazonaws.comRespondActivityTaskCompleted{ "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "results": "40"}

Lorsque l'activité se termine, Amazon SWF planifie une nouvelle tâche de décision pour l'exécution du fluxde travail à laquelle l'activité est associée.

Programmez l'outil de traitement d'activité pour rechercher une autre tâche d'activité une fois qu'une tâcheest terminée. Avec ce processus en boucle, l'outil de traitement d'activité recherche et finalise constammentles tâches.

Si l'activité ne répond pas dans le délai StartToCloseTimeout ou si le délai ScheduleToCloseTimeout aexpiré, Amazon SWF déclare l'expiration de la tâche d'activité et planifie une tâche de décision. Cetteapproche permet à un décideur d'effectuer une action appropriée, telle que la reprogrammation de la tâche.

Par exemple, si une instance Amazon EC2 exécute une tâche d'activité et que l'instance échoue avant lafin de la tâche, le décideur reçoit un événement d'expiration dans l'historique d'exécution du flux de travail.Si la tâche d'activité utilise une pulsation, le décideur reçoit l'événement lorsque la tâche ne parvient pasà fournir la pulsation suivante, après l'échec de l'instance Amazon EC2. Si ce n'est pas le cas, le décideurfinit par recevoir l'événement lorsque la tâche d'activité n'aboutit pas dans les délais spécifiés. Il appartientensuite au décideur de réaffecter la tâche ou d'effectuer une autre action.

Échec d'une tâche d'activitéSi un outil de traitement d'activité ne parvient pas à effectuer une tâche d'activité pour une raisonquelconque, mais qu'il parvient encore à communiquer avec Amazon SWF, vous pouvez le programmerpour qu'il abandonne la tâche.

Pour que l'outil de traitement d'activité abandonne une tâche d'activité, programmez-le pour qu'il appellel'action RespondActivityTaskFailed, qui spécifie le jeton de la tâche.

https://swf.us-east-1.amazonaws.comRespondActivityTaskFailed{ "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "reason" : "CC-Invalid", "details" : "Credit Card Number Checksum Failed"}

En tant que développeur, vous définissez les valeurs qui sont stockées dans les champs Reason et Details.Ce sont des chaînes de forme libre. Vous pouvez utiliser les conventions de code d'erreur qui conviennent

Version de l'API 2012-01-25122

Page 129: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLancement des outils de traitement d'activité

à votre application. Amazon SWF ne traite pas ces valeurs. Cependant, Amazon SWF peut afficher cesvaleurs dans la console.

Lorsqu'un tâche d'activité échoue, Amazon SWF planifie une tâche de décision pour l'exécution de flux detravail à laquelle la tâche d'activité est associée afin d'en informer le décideur. Programmez le décideurpour gérer les activités ayant échoué, par exemple en replanifiant l'activité ou en abandonnant l'exécutiondu flux de travail, selon la nature de l'échec.

Lancement des outils de traitement d'activitéPour lancer les outils de traitement d'activité, compressez votre logique dans un fichier exécutable quevous pourrez utiliser sur la plateforme de ces outils de traitement d'activité. Par exemple, vous pouvezcompresser votre code activité sous forme de fichier exécutable Java que vous pouvez exécuter sur desserveurs Linux et Windows.

Une fois lancés, les outils de traitement d'activité se mettent à rechercher des tâches. Toutefois, tant que ledécideur ne planifie pas les tâches d'activité, ces recherches expirent sans tâche et les outils de traitementd'activité continuent simplement de rechercher des tâches.

Comme les recherches sont des demandes sortantes, l'outil de traitement d'activité peut s'exécuter surn'importe quel réseau ayant accès au point de terminaison Amazon SWF.

Vous pouvez lancer autant de outils de traitement d'activité que vous le souhaitez. Lorsque le décideurplanifie les tâches d'activité, Amazon SWF distribue automatiquement ces dernières aux outils detraitement d'activité qui les recherchent.

Développement de décideurs dans Amazon SWFLes décideurs sont des implémentations de la logique de coordination qui est appliquée lors de l'exécutionde votre flux de travail. Vous pouvez exécuter plusieurs décideurs pour un seul type de flux de travail.

Comme l'état d'exécution d'une exécution de flux de travail est stocké dans son historique de flux de travail,les décideurs peuvent être sans état. Amazon SWF gère l'historique des exécutions de flux de travailet le fournit à un décideur avec chaque tâche de décision. Cela vous permet, le cas échéant, d'ajouteret de supprimer les décideurs, ce qui optimise l'évolutivité du traitement des flux de travail. Lorsque lacharge système augmente, il vous suffit d'ajouter des décideurs pour gérer l'accroissement de la capacité.Notez, toutefois, qu'une seule tâche de décision à la fois peut être ouverte pour une exécution de workflowdonnée.

Chaque fois qu'un changement d'état se produit pour une exécution de flux de travail, Amazon SWFplanifie une tâche de décision. Chaque fois qu'un décideur reçoit une tâche de décision, il effectue lesopérations suivantes :

• Il interprète l'historique d'exécution du flux de travail fourni avec la tâche de la décision.• Il applique la logique de coordination en fonction de l'historique d'exécution du flux de travail et émet des

décisions sur ce qu'il faut faire ensuite. Chacune d'elles est représentée par une structure de décision.• Finalise la tâche de décision et fournit la liste des décisions à Amazon SWF.

Cette section décrit comment développer un décideur, ce qui implique les actions suivantes :

• Programmation du décideur pour qu'il recherche les tâches de décision• Programmation du décideur pour qu'il interprète l'historique d'exécution du flux de travail et pour qu'il

prenne des décisions• Programmation du décideur pour qu'il réponde à une tâche de décision

Version de l'API 2012-01-25123

Page 130: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de la logique de coordination

Les exemples de cette section illustrent comment programmer un décideur pour le flux de travail d'uncommerce en ligne.

Vous pouvez mettre en œuvre le décideur dans le langage de votre choix et l'exécuter n'importe où, tantqu'il parvient à communiquer avec Amazon SWF via son API de service.

Rubriques• Définition de la logique de coordination (p. 124)• Recherche des tâches de décision (p. 124)• Application de la logique de coordination (p. 126)• Renvoi des décisions (p. 126)• Fermeture d'une exécution de flux de travail (p. 127)• Lancement des décideurs (p. 128)

Définition de la logique de coordinationLa première étape à suivre lors du développement d'un décideur consiste à définir la logique decoordination. Pour un commerce en ligne, la logique de coordination qui planifie chaque activité une foisque l'activité précédente se termine peut ressembler à cela :

IF lastEvent = "StartWorkflowInstance" addToDecisions ScheduleVerifyOrderActivity

ELSIF lastEvent = "CompleteVerifyOrderActivity" addToDecisions ScheduleChargeCreditCardActivity

ELSIF lastEvent = "CompleteChargeCreditCardActivity" addToDecisions ScheduleCompleteShipOrderActivity

ELSIF lastEvent = "CompleteShipOrderActivity" addToDecisions ScheduleRecordOrderCompletion

ELSIF lastEvent = "CompleteRecordOrderCompletion" addToDecisions CloseWorkflow

ENDIF

Le décideur applique la logique de coordination de l'historique d'exécution du flux de travailet crée une liste des décisions lorsqu'il finalise la tâche de décision à l'aide de l'actionRespondDecisionTaskCompleted.

Recherche des tâches de décisionChaque décideur recherche les tâches de décision. Ces dernières contiennent les informations que ledécideur utilise pour générer des décisions telles que la planification des tâches d'activité. Pour rechercherles tâches de décision, le décideur utilise l'action PollForDecisionTask.

Dans cet exemple, le décideur recherche une tâche de décision, en spécifiant la liste de tâchescustomerOrderWorkflow-0.1.

https://swf.us-east-1.amazonaws.comPollForDecisionTask{ "domain": "867530901", "taskList": {"name": "customerOrderWorkflow-v0.1"}, "identity": "Decider01",

Version de l'API 2012-01-25124

Page 131: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRecherche des tâches de décision

"maximumPageSize": 50, "reverseOrder": true}

Si une tâche de décision est disponible dans la liste des tâches spécifiée, Amazon SWF la retourneimmédiatement. Si aucune tâche ne décision n'est présente, Amazon SWF conserve la connexion ouvertependant une durée maximale de 60 secondes et renvoie une tâche dès qu'elle devient disponible. Siaucune tâche n'est disponible après ce délai, Amazon SWF renvoie une réponse vide. Une réponsevide est une structure Task dans laquelle la valeur taskToken est une chaîne vide. Prenez soin deprogrammer le décideur de sorte qu'il recherche une autre tâche s'il reçoit une réponse vide.

Si une tâche de décision est disponible, Amazon SWF renvoie une réponse qui contient la tâche dedécision, ainsi qu'une vue paginée de l'historique d'exécution du flux de travail.

Dans cet exemple, le type de l'événement le plus récent indique que l'exécution du flux de travail acommencé et que l'élément d'entrée contient les informations nécessaires pour effectuer la première tâche.

{ "events": [ { "decisionTaskStartedEventAttributes": { "identity": "Decider01", "scheduledEventId": 2 }, "eventId": 3, "eventTimestamp": 1326593394.566, "eventType": "DecisionTaskStarted" }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 2, "eventTimestamp": 1326592619.474, "eventType": "DecisionTaskScheduled" }, { "eventId": 1, "eventTimestamp": 1326592619.474, "eventType": "WorkflowExecutionStarted", "workflowExecutionStartedEventAttributes": { "childPolicy" : "TERMINATE", "executionStartToCloseTimeout" : "3600", "input" : "data-used-decider-for-first-task", "parentInitiatedEventId": 0, "tagList" : ["music purchase", "digital", "ricoh-the-dog"], "taskList": { "name": "specialTaskList" }, "taskStartToCloseTimeout": "600", "workflowType": { "name": "customerOrderWorkflow", "version": "1.0" } } } ], ...}

Après la réception de l'historique d'exécution du flux de travail, le décideur interprète l'historique et prenddes décisions en fonction de sa logique de coordination.

Comme le nombre d'événements de l'historique d'une seule exécution de flux de travail peut être élevé, lerésultat renvoyé est parfois réparti sur plusieurs pages. Pour récupérer les pages suivantes, effectuez des

Version de l'API 2012-01-25125

Page 132: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurApplication de la logique de coordination

appels supplémentaires à PollForDecisionTask via le jeton nextPageToken renvoyé par l'appel initial.Notez que vous ne pouvez pas appeler GetWorkflowExecutionHistory avec nextPageToken. Au lieude cela, appelez PollForDecisionTask à nouveau.

Application de la logique de coordinationUne fois que le décideur reçoit une tâche de décision, programmez-le pour qu'il interprète l'historiqued'exécution du flux de travail afin de déterminer les événements qui ont eu lieu jusque-là. Il devrait se basersur ces informations pour générer une liste des décisions.

Dans l'exemple de commerce en ligne que nous avons choisi, seul le dernier événement de l'historique duflux de travail nous intéresse. Nous définissons donc la logique suivante.

IF lastEvent = "StartWorkflowInstance" addToDecisions ScheduleVerifyOrderActivity

ELSIF lastEvent = "CompleteVerifyOrderActivity" addToDecisions ScheduleChargeCreditCardActivity

ELSIF lastEvent = "CompleteChargeCreditCardActivity" addToDecisions ScheduleCompleteShipOrderActivity

ELSIF lastEvent = "CompleteShipOrderActivity" addToDecisions ScheduleRecordOrderCompletion

ELSIF lastEvent = "CompleteRecordOrderCompletion" addToDecisions CloseWorkflow

ENDIF

Si le dernier événement correspond à CompleteVerifyOrderActivity, vous devez ajouter l'activitéScheduleChargeCreditCardActivity à la liste des décisions.

Une fois que le décideur a déterminé les décisions à prendre, il peut renvoyer les décisions appropriées àAmazon SWF.

Renvoi des décisionsAprès avoir interprété l'historique de flux de travail et généré la liste de décisions, le décideur peur renvoyerces décisions à Amazon SWF.

Programmez le décideur pour qu'il extraie les données dont il a besoin dans l'historique d'exécution du fluxde travail, puis créez des décisions qui spécifient les actions appropriées suivantes pour ce dernier. Ledécideur renvoie ces décisions à Amazon SWF à l'aide de l'action RespondDecisionTaskCompleted.Consultez Amazon Simple Workflow Service API Reference pour obtenir la liste des types de décisiondisponibles.

Dans l'exemple de commerce en ligne, lorsque le décideur renvoie l'ensemble des décisions qu'il agénérées, il inclut également l'entrée de la carte de crédit provenant de l'historique d'exécution du flux detravail. L'outil de traitement d'activité dispose ensuite des informations dont il a besoin pour effectuer latâche d'activité.

Lorsque toutes les activités de l'exécution de flux de travail sont terminées, le décideur ferme celle-ci.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{ "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions" : [

Version de l'API 2012-01-25126

Page 133: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurFermeture d'une exécution de flux de travail

{ "decisionType" :"ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes" : { "control" :"OPTIONAL_DATA_FOR_DECIDER", "activityType" : { "name" :"ScheduleChargeCreditCardActivity", "version" :"1.1" }, "activityId" :"3e2e6e55-e7c4-beef-feed-aa815722b7be", "scheduleToCloseTimeout" :"360", "taskList" : { "name" :"CC_TASKS" }, "scheduleToStartTimeout" :"60", "startToCloseTimeout" :"300", "heartbeatTimeout" :"60", "input" : "4321-0001-0002-1234: 0212 : 234" } } ]}

Fermeture d'une exécution de flux de travailLorsque le décideur détermine que le processus est terminé (autrement dit, qu'il n'y a plus d'activités àeffectuer), le décideur génère une décision pour fermer l'exécution de flux de travail.

Afin de fermer une exécution du flux de travail, programmez le décideur pour qu'il interprète lesévénements de l'historique de flux de travail afin de déterminer ce qui s'est passé lors de l'exécution du fluxde travail et pour voir si cette dernière doit être fermée.

Si le flux de travail est terminé sans erreur, fermez l'exécution du flux de travail en appelantRespondDecisionTaskCompleted avec la décision CompleteWorkflowExecution. Si l'exécution esterronée, vous pouvez l'arrêter à l'aide de la décision FailWorkflowExecution.

Dans cet exemple de commerce en ligne, le décideur examine l'historique et se base sur la logique decoordination pour ajouter une décision de fermeture de l'exécution de flux de travail à la liste des décisions,puis initie une action RespondDecisionTaskCompleted avec une décision de fermeture du flux detravail.

Note

Dans certains cas, fermeture d'une exécution de flux de travail peut échouer. Par exemple, siun signal est reçu pendant que le décideur ferme l'exécution du flux de travail, la décision defermeture échoue. Pour gérer cette possibilité, vérifiez que le décideur continue de rechercher lestâches de décision. En outre, assurez-vous que le décideur qui reçoit la tâche de décision suivanteréponde à l'événement—dans ce cas, un signal—qui a empêché la fermeture de l'exécution.

Si vous le souhaitez, vous pouvez également annuler les exécutions de flux de travail. Cette approchepeut s'avérer particulièrement utile pour les flux de travail de longue durée. Pour permettre l'annulation,le décideur doit gérer l'événement WorkflowExecutionCancelRequested dans l'historique.Cet événement indique que l'annulation de l'exécution a été demandée. Le décideur doit effectuerles opérations de nettoyage appropriées, telles que l'annulation des tâches d'activité en cours et lafermeture du flux de travail en appelant l'action RespondDecisionTaskCompleted avec la décisionCancelWorkflowExecution.

L'exemple suivant appelle RespondDecisionTaskCompleted pour spécifier que l'exécution de flux detravail en cours est annulée.

https://swf.us-east-1.amazonaws.comRespondDecisionTaskCompleted{

Version de l'API 2012-01-25127

Page 134: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurLancement des décideurs

"taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions" : [ { "decisionType":"CancelWorkflowExecution", "CancelWorkflowExecutionAttributes":{ "Details": "Customer canceled order" } } ]}

Amazon SWF s'assure que la décision de fermer ou d'annuler l'exécution du flux de travail est la dernièredécision envoyée par le décideur. Autrement dit, vous ne pouvez pas avoir de décisions après celle quiferme le flux de travail.

Lancement des décideursUne fois que les décideurs sont développés, vous êtes prêt à en lancer un ou plusieurs.

Pour lancer les décideurs, compressez votre logique de coordination dans un fichier exécutable que vouspouvez utiliser sur la plateforme du décideur. Par exemple, vous pouvez compresser le code du décideursous forme de fichier exécutable Java que vous pouvez exécuter sur des ordinateurs Linux et Windows.

Une fois lancés, les décideurs doivent commencer à rechercher des tâches dans Amazon SWF. Tantque vous ne démarrez pas les exécutions de flux de travail et qu'Amazon SWF ne planifie pas de tâchesde décision, ces recherches expirent et obtiennent des réponses vides. Une réponse vide est unestructure Task dans laquelle la valeur taskToken est une chaîne vide. Les décideurs doivent simplementpoursuivre les recherches.

Amazon SWF veille à ce qu'une seule tâche de décision à la fois soit active pour chaque exécution deflux de travail. Cela empêche les problèmes tels que des décisions contradictoires. En outre, AmazonSWF s'assure qu'une seule tâche de décision est attribuée à un seul décideur, quel que soit le nombre dedécideurs en cours d'exécution.

Si un événement qui génère une tâche de décision se produit pendant qu'un décideur traite une autre tâchede décision, Amazon SWF ajoute la nouvelle tâche à une file d'attente jusqu'à ce que celle en cours setermine. Une fois que la tâche en cours est terminée, Amazon SWF met à disposition la nouvelle tâchede décision. En outre, les tâches de décision sont traitées par lot. Autrement dit, si plusieurs activités seterminent lorsqu'un décideur traite une tâche de décision, Amazon SWF ne crée qu'une seule tâche dedécision pour représenter l'achèvement de plusieurs tâches. Toutefois, chaque tâche terminée reçoit unévénement individuel dans l'historique d'exécution du flux de travail.

Comme les recherches sont des demandes sortantes, les décideurs peuvent s'exécuter sur n'importe quelréseau ayant accès au point de terminaison Amazon SWF.

Pour que les exécutions de flux de travail progressent, au moins un décideur doit être exécuté. Vouspouvez lancer autant de décideurs que vous le souhaitez. Amazon SWF prend en charge l'interrogation dela même liste de tâches par plusieurs décideurs.

Lancement d'exécutions de flux de travail avecAmazon SWF

Vous pouvez lancer l'exécution d'un type de flux de travail enregistré à partir de n'importe quelle applicationvia l'action StartWorkflowExecution. Lorsque vous lancez l'exécution, vous y associez un identifiant,appelé workflowId. La valeur workflowId peut être une chaîne spécifique à votre application, telle quele numéro de commande dans une application de traitement des commandes. Vous ne pouvez pas utiliser

Version de l'API 2012-01-25128

Page 135: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition de la priorité des tâches

la même valeur workflowId pour plusieurs exécutions de flux de travail ouvertes dans le même domaine.Par exemple, si vous lancez deux exécutions de flux de travail avec la valeur workflowId CustomerOrder 01, la deuxième exécution de flux de travail ne démarre pas et la demande échoue. Toutefois,vous pouvez réutiliser la fermeture workflowId d'une exécution. Amazon SWF associe également unidentifiant unique généré par le système, appelé runId, à chaque exécution de flux de travail.

Une fois que les types de flux de travail et d'activités sont enregistrés, appelez l'actionStartWorkflowExecution pour lancer le flux de travail. La valeur du paramètre input peut être unechaîne spécifiée par l'application qui initie le flux de travail. La valeur executionStartToCloseTimeoutcorrespond au temps, en secondes, que l'exécution de flux de travail peut prendre entre le début à lafermeture. Passé ce délai, cette limite entraîne l'expiration de l'exécution du flux de travail. Contrairementà certains autres paramètres de délai dans Amazon SWF, vous ne pouvez pas spécifier une valeurNONE pour ce délai, car la durée d'exécution d'un flux de travail est limitée à un an. De même, la valeurtaskStartToCloseTimeout correspond au temps, en secondes, qu'une tâche de décision associée à cetteexécution de flux de travail peut prendre avant d'expirer.

https://swf.us-east-1.amazonaws.comStartWorkflowExecution{ "domain" : "867530901", "workflowId" : "20110927-T-1", "workflowType" : { "name" : "customerOrderWorkflow", "version" : "1.1" }, "taskList" : { "name" : "specialTaskList" }, "input" : "arbitrary-string-that-is-meaningful-to-the-workflow", "executionStartToCloseTimeout" : "1800", "tagList" : [ "music purchase", "digital", "ricoh-the-dog" ], "taskStartToCloseTimeout" : "1800", "childPolicy" : "TERMINATE"}

Si l'action StartWorkflowExecution aboutit, Amazon SWF renvoie le runId de l'exécution du flux detravail. Le runId pour une exécution de flux de travail est unique dans une région spécifique. Enregistrezle runId, au cas où vous devriez spécifier ultérieurement cette exécution de flux de travail dans un appelà Amazon SWF. Par exemple, vous aurez besoin du runId si vous devez envoyer plus tard un signal àl'exécution de flux de travail.

{"runId": "9ba33198-4b18-4792-9c15-7181fb3a8852"}

Définition de la priorité des tâchesPar défaut, les tâches d'une liste des tâches dépendent de leur heure d'arrivée : celles qui sont planifiéesen premier sont généralement exécutées en premier, aussi loin que possible. En définissant une priorité detâche facultative, vous pouvez donner la priorité à certaines tâches : Amazon SWF essaiera d'envoyer lestâches dont la priorité est élevée avant celles dont la priorité est faible.

Note

Les tâches qui sont planifiées en premier sont généralement exécutées en premier, mais ce n'estpas garanti.

Vous pouvez définir des priorités de tâche pour les flux de travail et les activités. La priorité de tâche d'unflux de travail n'a pas d'incidence sur la priorité des tâches d'activité qu'il planifie, ni sur les flux de travailenfants qu'il démarre. La priorité par défaut d'une activité ou d'un flux de travail est définie (par vous ou parAmazon SWF) lors de l'enregistrement, et la priorité de la tâche enregistrée est toujours utilisée, sauf si elleest remplacée lors de planification de l'activité ou du lancement d'une exécution de flux de travail.

Version de l'API 2012-01-25129

Page 136: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition d'une priorité de tâche pour les flux de travail

Les valeurs de priorité des tâche peuvent aller de « -2147483648 » à « 2147483647 » (le nombre le plusélevé indique une priorité supérieure). Si vous ne définissez la priorité de tâche d'une activité ou d'un fluxde travail, la priorité zéro (« 0 ») lui est attribuée.

Rubriques• Définition d'une priorité de tâche pour les flux de travail (p. 130)• Définition d'une priorité de tâche pour les activités (p. 131)• Actions renvoyant les informations relatives aux priorités de tâche (p. 132)

Définition d'une priorité de tâche pour les flux de travailVous pouvez définir la priorité de tâche d'un flux de travail lorsque vous l'enregistrez ou lorsque vousle lancez. La priorité de tâche définie lorsque le type de flux de travail est enregistré est utilisée commevaleur par défaut pour toutes les exécutions de flux de travail de ce type, sauf si elle est remplacée lors dulancement de l'exécution de flux de travail.

Pour enregistrer un type de flux de travail avec une priorité de tâche par défaut, définissez l'optiondefaultTaskPriority lorsque vous utilisez l'action RegisterWorkflowType :

{ "domain": "867530901", "name": "expeditedOrderWorkflow", "version": "1.0", "description": "Expedited customer orders workflow", "defaultTaskStartToCloseTimeout": "600", "defaultExecutionStartToCloseTimeout": "3600", "defaultTaskList": {"name": "mainTaskList"}, "defaultTaskPriority": "10", "defaultChildPolicy": "TERMINATE"}

Vous pouvez remplacer la priorité de tâche enregistrée d'un type de flux de travail lorsque vous lancez uneexécution de flux de travail avec StartWorkflowExecution :

{ "childPolicy": "TERMINATE", "domain": "867530901", "executionStartToCloseTimeout": "1800", "input": "arbitrary-string-that-is-meaningful-to-the-workflow", "tagList": ["music purchase", "digital", "ricoh-the-dog"], "taskList": {"name": "specialTaskList"}, "taskPriority": "-20", "taskStartToCloseTimeout": "600", "workflowId": "20110927-T-1", "workflowType": {"name": "customerOrderWorkflow", "version": "1.0"},}

Vous pouvez également remplacer la priorité de tâche enregistrée lors du lancement d'un flux de travailenfant ou lorsque vous continuez un flux de travail comme s'il était nouveau, par exemple lorsqu'il répond àune décision avec RespondDecisionTaskCompleted.

Pour définir la priorité de tâche d'un flux de travail enfant, indiquez la valeur dansstartChildWorkflowExecutionDecisionAttributes :

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [

Version de l'API 2012-01-25130

Page 137: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDéfinition d'une priorité de tâche pour les activités

{ "decisionType": "StartChildWorkflowExecution", "startChildWorkflowExecutionDecisionAttributes": { "childPolicy": "TERMINATE", "control": "digital music", "executionStartToCloseTimeout": "900", "input": "201412-Smith-011x", "taskList": {"name": "specialTaskList"}, "taskPriority": "5", "taskStartToCloseTimeout": "600", "workflowId": "verification-workflow", "workflowType": { "name": "MyChildWorkflow", "version": "1.0" } } } ]}

Lorsque vous poursuivez un flux de travail comme s'il était nouveau, définissez la priorité de la tâche danscontinueAsNewWorkflowExecutionDecisionAttributes :

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [ { "decisionType": "ContinueAsNewWorkflowExecution", "continueAsNewWorkflowExecutionDecisionAttributes": { "childPolicy": "TERMINATE", "executionStartToCloseTimeout": "1800", "input": "5634-0056-4367-0923,12/12,437", "taskList": {"name": "specialTaskList"}, "taskStartToCloseTimeout": "600", "taskPriority": "100", "workflowTypeVersion": "1.0" } } ]}

Définition d'une priorité de tâche pour les activitésVous pouvez définir la priorité de tâche d'une activité lors de son enregistrement ou de sa planification. Lapriorité de tâche définie lors de l'enregistrement d'un type d'activité est utilisée comme priorité par défautlorsque l'activité est exécutée, sauf si elle est remplacée lors de la planification de l'activité.

Pour définir une priorité de tâche lors de l'enregistrement d'un type d'activité, spécifiez l'optiondefaultTaskPriority lorsque vous utilisez l'action RegisterActivityType :

{ "defaultTaskHeartbeatTimeout": "120", "defaultTaskList": {"name": "mainTaskList"}, "defaultTaskPriority": "10", "defaultTaskScheduleToCloseTimeout": "900", "defaultTaskScheduleToStartTimeout": "300", "defaultTaskStartToCloseTimeout": "600", "description": "Verify the customer credit card", "domain": "867530901", "name": "activityVerify", "version": "1.0"

Version de l'API 2012-01-25131

Page 138: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurActions renvoyant les informations

relatives aux priorités de tâche

}

Pour planifier une tâche avec une priorité, utilisez l'option taskPriority lors de la planification de l'activité vial'action RespondDecisionTaskCompleted :

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [ { "decisionType": "ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes": { "activityId": "verify-account", "activityType": { "name": "activityVerify", "version": "1.0" }, "control": "digital music", "input": "abab-101", "taskList": {"name": "mainTaskList"}, "taskPriority": "15" } } ]}

Actions renvoyant les informations relatives auxpriorités de tâcheVous pouvez obtenir des informations sur la priorité de tâche définie (ou la priorité de tâche par défaut) àpartir des actions Amazon SWF suivantes :

• DescribeActivityType renvoie la priorité par défaut defaultTaskPriority du type d'activité dans la sectionconfiguration de la réponse.

• DescribeWorkflowExecution renvoie la priorité de tâche taskPriority de l'exécution de flux de travail dansla section executionConfiguration de la réponse.

• DescribeWorkflowType renvoie la priorité par défaut defaultTaskPriority du type de flux de travail dans lasection configuration de la réponse.

• GetWorkflowExecutionHistory et PollForDecisionTask fournissentdes informations sur la priorité de tâche dans les sectionsactivityTaskScheduledEventAttributes, decisionTaskScheduledEventAttributes,workflowExecutionContinuedAsNewEventAttributes etworkflowExecutionStartedEventAttributes de la réponse.

Gestion des erreurs dans Amazon SWFDifférents types d'erreurs peuvent survenir au cours d'une exécution de flux de travail.

Rubriques• Erreurs de validation (p. 133)• Erreur lors de l'application d'actions ou de décisions (p. 133)• Délais (p. 133)• Erreurs déclenchées par le code utilisateur (p. 133)• Erreurs liées à la fermeture d'une exécution de flux de travail (p. 134)

Version de l'API 2012-01-25132

Page 139: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurErreurs de validation

Erreurs de validationLes erreurs de validation se produisent lorsqu'une demande envoyée à Amazon SWF échoue, carson format ou ses données ne sont pas valides. Dans ce contexte, il peut s'agir d'une action commeDescribeDomain ou d'une décision comme StartTimer. S'il s'agit d'une action, Amazon SWF renvoieun code d'erreur dans la réponse. Vérifiez ce code d'erreur, car il peut indiquer la cause de l'échec. Parexemple, il se peut qu'un ou plusieurs des arguments transmis avec la requête ne soient pas valides. Pourobtenir une liste des codes d'erreur les plus communs, consultez la rubrique de l'action correspondant dansle document Amazon Simple Workflow Service API Reference.

Si la requête qui a échoué est une décision, un événement approprié figure dans l'historique d'exécutiondu flux de travail. Par exemple, si la décision StartTimer a échoué, l'événement StartTimerFailedapparaît dans l'historique. Le décideur doit vérifier ces événements lorsqu'il reçoit l'historique en réponse àl'action PollForDecisionTask ou GetWorkflowExecutionHistory. Voici une liste des événementsd'échec qui peuvent se produire lorsque la décision n'est pas correctement formée ou lorsqu'elle contientdes données non valides.

Erreur lors de l'application d'actions ou de décisionsMême si la demande est correctement formée, des erreurs peuvent se produire lorsqu'Amazon SWF tentede la traiter. Dans ce cas, l'un des événements suivants de l'historique indique qu'une erreur est survenue.Examinez le champ reason de l'événement afin de déterminer la cause de l'échec.

• CancelTimerFailed

• RequestCancelActivityTaskFailed

• RequestCancelExternalWorkflowExecutionFailed

• ScheduleActivityTaskFailed

• SignalExternalWorkflowExecutionFailed

• StartChildWorkflowExecutionFailed

• StartTimerFailed

DélaisLes décideurs, les outils de traitement d'activité et les exécutions de flux de travail sont tous soumis àdes délai d'expiration. Avec ce type d'erreur, une tâche ou un flux de travail enfant expire. Un événementqui décrit l'expiration s'affiche dans l'historique. Pour gérer cet événement, le décideur doit, par exemple,replanifier la tâche ou redémarrer le flux de travail enfant. Pour plus d'informations sur les délaisd'expiration, consultez la section Amazon SWF Types de délai (p. 143).

• ActivityTaskTimedOut

• ChildWorkflowExecutionTimedOut

• DecisionTaskTimedOut

• WorkflowExecutionTimedOut

Erreurs déclenchées par le code utilisateurCe type de condition d'erreur correspond, par exemple, à l'échec d'une tâche d'activité ou d'un flux detravail enfant. Comme avec les erreurs liées à l'expiration d'un délai, Amazon SWF ajoute un événementapproprié dans l'historique d'exécution du flux de travail. Pour gérer cet événement, le décideur doitessayer de replanifier la tâche ou de redémarrer le flux de travail enfant.

• ActivityTaskFailed

Version de l'API 2012-01-25133

Page 140: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurErreurs liées à la fermeture d'une exécution de flux de travail

• ChildWorkflowExecutionFailed

Erreurs liées à la fermeture d'une exécution de flux detravailLes décideurs peuvent également voir les événements suivants s'ils essaient de fermer un flux de travailavec une tâche de décision en attente.

• FailWorkflowExecutionFailed

• CompleteWorkFlowExecutionFailed

• ContinueAsNewWorkflowExecutionFailed

• CancelWorkflowExecutionFailed

Pour plus d'informations sur les événements répertoriés ci-dessus, consultez la page Événementd'historique dans le document Référence d'API Amazon SWF.

Version de l'API 2012-01-25134

Page 141: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurGeneral Account Quotas for Amazon SWF

Amazon SWF QuotasAmazon SWF définit les quotas sur les tailles de certains paramètres de flux de travail, tels que sur lenombre de domaines par compte et sur la taille de l’historique d’exécution du workflow. Ces quotas sontconçus pour empêcher les flux de travail erronés de consommer toutes les ressources du système, maisne sont pas des limites infranchissables. Si vous constatez que votre application dépasse fréquemment cesquotas, vous pouvez demander une augmentation du quota de service (p. 142).

Rubriques• General Account Quotas for Amazon SWF (p. 135)• Quotas on Workflow Executions (p. 135)• Quotas on Task Executions (p. 136)• Amazon SWF throttling quotas (p. 137)• Throttling Quotas for Large Regions (p. 140)• Requesting a Quota Increase (p. 142)

General Account Quotas for Amazon SWF• Maximum registered domains – 100

This quota includes both registered and deprecated domains.• Maximum workflow and activity types – 10,000 each per domain

This quota includes both registered and deprecated types.• API call quota – Beyond infrequent spikes, applications may be throttled if they make a large number of

API calls in a very short period of time.• Maximum request size – 1 MB per request

This is the total data size per Amazon SWF API request, including the request header and all otherassociated request data.

• Truncated responses for Count APIs – Indicates that an internal quota was reached and that theresponse is not the full count.

Some queries will internally reach the 1 MB quota mentioned above before returning a full response. Thefollowing can return a truncated response instead of the full count.• CountClosedWorkflowExecutions• CountOpenWorkflowExecutions• CountPendingActivityTasks• CountPendingDecisionTasks

For each of these, if the truncated response is set to true, the count is less than the full amount. Thisinternal quota can not be increased.

• Maximum number of tags – 50 tags per resource.

Attempting to add tags beyond 50 will result in a 400 error, TooManyTagsFault.

Quotas on Workflow Executions• Maximum open workflow executions – 100,000 per domain

Version de l'API 2012-01-25135

Page 142: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurQuotas on Task Executions

This count includes child workflow executions.• Maximum workflow execution time – 1 year• Maximum workflow execution history size – 25,000 events

Best practice is to structure each workflow such that its history does not grow beyond 10,000 events.Since the decider has to fetch the workflow history, a smaller history allows the decider to complete morequickly. If using the Flow Framework (p. 146), you can use ContinueAsNew to continue a workflow witha fresh history.

• Maximum open child workflow executions – 1,000 per workflow execution• Workflow execution idle time quota – 1 year (constrained by workflow execution time maximum)

You can configure workflow timeouts (p. 143) to cause a timeout event to occur if a particular stage ofyour workflow takes too long.

• Workflow retention time quota – 90 days

After this time, the workflow history can no longer be retrieved or viewed. There is no further limit to thenumber of closed workflow executions that are retained by Amazon SWF.

Si votre cas d’utilisation nécessite que vous alliez au-delà de ces quotas, vous pouvez utiliser lesfonctionnalités Amazon SWF permet de poursuivre les exécutions et de structurer vos applications enutilisant flux de travail enfant (p. 62) exécutions. Si vous constatez que vous avez toujours besoin d’uneaugmentation des quotas, voir Requesting a Quota Increase (p. 142).

Quotas on Task Executions• Maximum pollers per task list – 1,000 per task list

You can have a maximum of 1,000 pollers which simultaneously poll a particular task list. If you go over1,000, you receive a LimitExceededException.

Note

While the maximum is 1,000, you might encounter LimitExceededException errors wellbefore this quota. To reduce these errors, use multiple task lists to distribute polling.

• Maximum task execution time – 1 year (constrained by workflow execution time maximum)

You can configure activity timeouts (p. 143) to cause a timeout event to occur if a particular stage ofyour activity task (p. 53) execution takes too long.

• Maximum time SWF will keep a task in the queue – 1 year (constrained by workflow execution timequota)

You can configure default activity timeouts (p. 143) during activity registration that will cause a timeoutevent to occur if a particular stage of your activity task (p. 53) execution takes too long. You can alsooverride the default activity timeouts when you schedule an activity task in your decider code.

• Maximum open activity tasks – 1,000 per workflow execution.

This quota includes both activity tasks that have been scheduled and those being processed by workers.• Maximum open timers – 1,000 per workflow execution• Maximum input/result data size – 32,768 characters

This quota affects activity or workflow execution result data, input data when scheduling activity tasks orworkflow executions, and input sent with a workflow execution signal (p. 62).

• Maximum decisions in a decision task response – varies

Version de l'API 2012-01-25136

Page 143: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurAmazon SWF throttling quotas

Due to the 1 MB quota on the maximum API request size (p. 135), the number of decisions returned ina single call to RespondDecisionTaskCompleted will be limited according to the size of the data usedby each decision, including the size of any input data provided to scheduled activity tasks or to workflowexecutions.

Amazon SWF throttling quotasEn plus des quotas de service décrits précédemment, certains Amazon SWF Les appels API et lesévénements de décision sont chargés de maintenir la bande passante du service, en utilisant un jeton detoken. Si votre taux de demandes dépasse systématiquement les taux indiqués ici, vous pouvez demanderune augmentation du quota de papillon des gaz (p. 142).

Les quotas de limitation sont par compte / région. Différentes régions ont des quotas de limitation différentsen fonction de leur taille.

Throttling Quotas for Small Regions (p. 137)• Région USA Est (Ohio)• Région USA Ouest (Oregon)• Région Canada (Centre)• Région Asie-Pacifique (Séoul)• Région Asie-Pacifique (Mumbai)• Région Chine (Ningxia)• Région Europe (Francfort)• Région Europe (Irlande)• Région Europe (Londres)• Région Europe (Stockholm)

Throttling Quotas for Medium Regions (p. 139)• Région Asie-Pacifique (Tokyo)• Région Asie-Pacifique (Singapour)• Région Asie-Pacifique (Sydney)• Région Chine (Pékin)• Région Amérique du Sud (São Paulo)• Région USA Ouest (Californie du Nord)

Throttling Quotas for Large Regions (p. 140)• Région USA Est (Virginie du N.)

Les sections suivantes répertorient les quotas de limitation pour chacun de ces groupes de régions.

Throttling Quotas for Small Regions

Nom d'API Taille de compartiment Taux de remplissage/s

CountClosedWorkflowExecutions 1 000* 1

CountOpenWorkflowExecutions 1 000* 1

Version de l'API 2012-01-25137

Page 144: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurThrottling Quotas for Small Regions

Nom d'API Taille de compartiment Taux de remplissage/s

CountPendingActivityTasks -100 1

CountPendingDecisionTasks -100 1

DeprecateActivityType -100 1

DeprecateDomain 50. 1

DeprecateWorkflowType -100 1

DescribeActivityType 1 000* 1

DescribeDomain 1 000* 1

DescribeWorkflowExecution 1 000* 1

DescribeWorkflowType 1 000* 1

GetWorkflowExecutionHistory 1 000* 5 %

ListActivityTypes -100 1

ListClosedWorkflowExecutions -100 1

ListDomains 50. 1

ListOpenWorkflowExecutions -100 1

ListWorkflowTypes -100 1

PollForActivityTask 1 000* -10

PollForDecisionTask 1 000* 12.

RecordActivityTaskHeartbeat 1 000* 1

RegisterActivityType -100 1

RegisterDomain 50. 1

RegisterWorkflowType -100 1

RequestCancelWorkflowExecution 1 000* 5 %

RespondActivityTaskCanceled 1 000* -10

RespondActivityTaskCompleted 1 000* -10

RespondActivityTaskFailed 1 000* -10

RespondDecisionTaskCompleted 1 000* 12.

SignalWorkflowExecution 1 000* 5 %

StartWorkflowExecution 1 000* 2.

TerminateWorkflowExecution 1 000* -10

Version de l'API 2012-01-25138

Page 145: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurThrottling Quotas for Medium Regions

Quotas de décision

La décision Taille de compartiment Taux de remplissage/s

RequestCancelExternalWorkflowExecution -100 -10

ScheduleActivityTask -100 -10

SignalExternalWorkflowExecution -100 -10

StartChildWorkflowExecution -100 2.

StartTimer 500** 25*

Throttling Quotas for Medium Regions

Nom d'API Taille de compartiment Taux de remplissage/s

CountClosedWorkflowExecutions 2 000 USD 2.

CountOpenWorkflowExecutions 2 000 USD 2.

CountPendingActivityTasks 200 USD 2.

CountPendingDecisionTasks 200 USD 2.

DeprecateActivityType 200 USD 2.

DeprecateDomain -100 2.

DeprecateWorkflowType 200 USD 2.

DescribeActivityType 2 000 USD 2.

DescribeDomain 200 USD 2.

DescribeWorkflowExecution 2 000 USD 2.

DescribeWorkflowType 2 000 USD 2.

GetWorkflowExecutionHistory 2 000 USD -10

ListActivityTypes 200 USD 2.

ListClosedWorkflowExecutions 200 USD 2.

ListDomains -100 2.

ListOpenWorkflowExecutions 200 USD 2.

ListWorkflowTypes 200 USD 2.

PollForActivityTask 2 000 USD -20

PollForDecisionTask 2 000 USD  : 24

RecordActivityTaskHeartbeat 2 000 USD 2.

RegisterActivityType 200 USD 2.

Version de l'API 2012-01-25139

Page 146: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurThrottling Quotas for Large Regions

Nom d'API Taille de compartiment Taux de remplissage/s

RegisterDomain -100 2.

RegisterWorkflowType 200 USD 2.

RequestCancelWorkflowExecution 2 000 USD -10

RespondActivityTaskCanceled 2 000 USD -20

RespondActivityTaskCompleted 2 000 USD -20

RespondActivityTaskFailed 1 000* -10

RespondDecisionTaskCompleted 2 000 USD  : 24

SignalWorkflowExecution 2 000 USD -10

StartWorkflowExecution 2 000 USD 4

TerminateWorkflowExecution 2 000 USD -20

Quotas de décision

La décision Taille de compartiment Taux de remplissage/s

RequestCancelExternalWorkflowExecution 200 USD -20

ScheduleActivityTask 200 USD -20

SignalExternalWorkflowExecution 200 USD -20

StartChildWorkflowExecution 200 USD 4

StartTimer 1 000* 50.

Throttling Quotas for Large Regions

Nom d'API Taille de compartiment Taux de remplissage/s

CountClosedWorkflowExecutions 1 000* 1

CountOpenWorkflowExecutions 1 000* 1

CountPendingActivityTasks -100 1

CountPendingDecisionTasks -100 1

DeprecateActivityType -100 1

DeprecateDomain 50. 1

DeprecateWorkflowType -100 1

DescribeActivityType 1 000* 1

DescribeDomain -100 1

Version de l'API 2012-01-25140

Page 147: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurThrottling Quotas for Large Regions

Nom d'API Taille de compartiment Taux de remplissage/s

DescribeWorkflowExecution 1 000* 1

DescribeWorkflowType 1 000* 1

GetWorkflowExecutionHistory 1 000* 5 %

ListActivityTypes -100 1

ListClosedWorkflowExecutions -100 1

ListDomains 50. 1

ListOpenWorkflowExecutions -100 1

ListWorkflowTypes -100 1

PollForActivityTask 1 000* -100

PollForDecisionTask 1 000* 142

RecordActivityTaskHeartbeat 1 000* 1

RegisterActivityType -100 1

RegisterDomain 50. 1

RegisterWorkflowType -100 1

RequestCancelWorkflowExecution 1 000* 5 %

RespondActivityTaskCanceled 1 000* -100

RespondActivityTaskCompleted 1 000* -100

RespondActivityTaskFailed 1 000* -100

RespondDecisionTaskCompleted 1 000* 142

SignalWorkflowExecution 1 000* 5 %

StartWorkflowExecution 1 000* 25*

TerminateWorkflowExecution 1 000* -10

Quotas de décision

La décision Taille de compartiment Taux de remplissage/s

RequestCancelExternalWorkflowExecution -100 -10

ScheduleActivityTask 500** -100

SignalExternalWorkflowExecution 500** -10

StartChildWorkflowExecution 500** 2.

StartTimer 1 000* 142

Version de l'API 2012-01-25141

Page 148: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurRequesting a Quota Increase

Requesting a Quota IncreaseUtilisez le Centre d’assistance page dans AWS Management Console pour demander une augmentationde quota pour les ressources fournies par Amazon Simple Workflow Service par région. Pour plusd'informations, consultez Pour demander une augmentation de quota dans le AWS General Reference.

Version de l'API 2012-01-25142

Page 149: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurTypes de délai

Ressources Amazon SimpleWorkflow Service

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

Rubriques• Amazon SWF Types de délai (p. 143)• Points de terminaison Amazon Simple Workflow Service (p. 146)• Documentation supplémentaire relative à Amazon Simple Workflow Service (p. 146)• Ressources Web pour Amazon Simple Workflow Service (p. 148)

Amazon SWF Types de délaiPour s'assurer que les exécutions de flux de travail fonctionnent comme prévu, Amazon SWF vous permetde définir différents types de délais. 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 à compterde l'heure où elles sont planifiées. Tous les délais dans l'API Amazon SWF sont spécifiés en secondes.Amazon SWF prend également en charge la chaîne NONE comme valeur de délai, qui indique qu'aucundélai n'est appliqué.

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 cet événement fournissent des informationssur le type de délai survenu, ainsi que sur la tâche de décision ou d'activité concernée. Amazon SWFplanifie également une tâche de décision. Lorsque le décideur reçoit la nouvelle tâche de décision, ilvoit l'événement de délai d'expiration dans l'historique et effectue une action appropriée en appelantl'RespondDecisionTaskCompletedaction.

Une tâche est considérée comme ouverte depuis le moment où elle est planifiée jusqu'à ce qu'elle soitfermé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 commeayant échoué. Une tâche peut également être fermée par Amazon SWF à la suite de l'expiration d'un délai.

Délais liés au flux de travail et aux tâches de décisionLe schéma suivant illustre comment les délais de flux de travail et de décision sont liés à la durée de vied'un flux de travail :

Version de l'API 2012-01-25143

Page 150: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDélais des tâches d'activité

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émarrage à la fermeture du flux de travail (timeoutType: START_TO_CLOSE) – Ce délai spécifiele temps maximal qu'une exécution du flux de travail peut prendre pour se terminer. Il est défini commevaleur par défaut lors de l'enregistrement du flux de travail, mais peut être remplacé par une autre valeurlorsque le flux de travail est lancé. Si ce délai est dépassé, Amazon SWF ferme l'exécution de flux detravail et ajoute un événement de type WorkflowExecutionTimedOut à l'historique d'exécution du fluxde travail. Outre timeoutType, les attributs de l'événement spécifient la stratégie childPolicy quiest en vigueur pour cette exécution de flux de travail. La stratégie enfant définit comment les exécutionsde 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 travailenfant sont arrêtées. Une fois qu'une exécution de flux de travail expire, vous ne pouvez plus effectuerque les appels de visibilité.

• Du démarrage à la fermeture de la tâche de décision (timeoutType: START_TO_CLOSE) – Ce délaispécifie le temps maximal que le décideur correspondant peut prendre pour effectuer une tâche de ladécision. Il est défini lors de l'enregistrement du type de flux de travail. Si ce délai est dépassé, la tâcheest marquée comme ayant expiré dans l'historique d'exécution du flux de travail et Amazon SWF ajouteun événement de type DecisionTaskTimedOut à l'historique du flux de travail. Les attributs d'événementincluent les IDs pour les événements qui correspondent au moment où cette tâche de décision a étéplanifiée (scheduledEventId) et au moment où elle a été démarrée (startedEventId). Outre l'ajoutde l'événement, Amazon SWF planifie également une nouvelle tâche de décision pour avertir le décideurque cette tâche de décision a expiré. Après expiration de ce délai, toute tentative de finalisation de ladé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é :

Version de l'API 2012-01-25144

Page 151: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDélais des tâches d'activité

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

• Du démarrage à la fermeture de la tâche d'activité (timeoutType: START_TO_CLOSE) – Cedélai spécifie le temps maximal qu'un outil de traitement d'activité peut prendre pour traiter unetâche après l'avoir reçue. Toute tentative de fermeture d'une tâche d'activité ayant expiré avec RespondActivityTaskCanceled , et échoue.RespondActivityTaskCompletedRespondActivityTaskFailed

• Pulsation de la tâche d'activité (timeoutType: HEARTBEAT) – Ce délai spécifie le temps maximald'exécution d'une tâche avant de fournir sa progression via l'action RecordActivityTaskHeartbeat.

• De la planification au démarrage de la tâche d'activité (timeoutType: SCHEDULE_TO_START) –Ce délai spécifie combien de temps Amazon SWF attend avant de déclencher l'expiration de la tâched'activité si aucun outil de traitement n'est disponible pour l'effectuer. Lorsque la tâche arrive à expiration,elle n'est pas attribuée à un autre outil de traitement.

• De la planification à la fermeture de la tâche d'activité (timeoutType: SCHEDULE_TO_CLOSE) – Cedélai spécifie combien de temps la tâche peut prendre entre l'heure à laquelle elle est planifiée et l'heureoù elle se termine. Cette valeur ne doit pas être supérieure à la somme des délais schedule-to-start etstart-to-close de la tâche.

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 lesremplacer par d'autres valeurs lorsque vous planifiez la tâche d'activité. Lorsque l'un de ces délais expire,ajoute un Amazon SWF événement de type ActivityTaskTimedOut à l'historique de flux de travail. Lavaleur d'attribut timeoutType de cet événement indique quel délai a expiré. Pour chaque délai, la valeurtimeoutType est indiquée entre parenthèses. Les attributs d'événement incluent également les IDs pourles événements qui correspondent au moment où la tâche d'activité a été planifiée (scheduledEventId)et au moment où elle a été démarrée (startedEventId). Outre l'ajout de l'événement, Amazon SWFplanifie également une nouvelle tâche de décision pour avertir le décideur que le délai a expiré.

Version de l'API 2012-01-25145

Page 152: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurPoints de terminaison

Points de terminaison Amazon Simple WorkflowService

La liste des régions et points de terminaisonAmazon SWF actuels est fournie dans Référence généraled'Amazon Web Services, en même temps que les points de terminaison des autres services.

Les domaines Amazon SWF, ainsi que tous les flux de travail et les activités associés doivent se trouver ausein de la même région pour communiquer entre eux. En outre, les domaines enregistrés, les flux de travailet les activités d'une région n'existent pas dans les autres régions. Par exemple, si vous créez un domainenommé « MySampleDomain » dans les régions us-east-1 et us-west-2, ils existent en tant que domainesséparés : les flux de travail, les listes de tâches, les activités ou les données associées à vos domaines nesont pas partagés entre les régions.

Si vous utilisez d'autres ressources AWS dans votre flux de travail, telles que des instances Amazon EC2,elles doivent également se trouver dans la même région que vos ressources Amazon SWF. Les seulesexceptions à cette règle s'appliquent aux services qui couvrent plusieurs régions, comme Amazon S3 etIAM. Vous pouvez accéder à ces services à partir des flux de travail, indépendamment de la région qui lesprend en charge.

Documentation supplémentaire relative à AmazonSimple Workflow Service

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

Rubriques• Amazon Simple Workflow Service API Reference (p. 146)• Documentation AWS Flow Framework (p. 146)• Documentation des kits SDK AWS (p. 147)• Documentation AWS CLI (p. 148)

Amazon Simple Workflow Service API ReferenceLe document Amazon Simple Workflow Service API Reference fournit des informations détaillées sur lel'API HTTP Amazon SWF, y compris les actions, la structure des requêtes et des réponses, ainsi que lescodes d'erreur.

Documentation AWS Flow FrameworkAWS Flow Framework est une structure de programmation qui simplifie la mise en œuvre des applicationsdistribuées asynchrones qu'utilise Amazon SWF pour gérer les activités et les flux de travail, ce qui vouspermet de vous concentrer sur l'implémentation de la logique de votre flux de travail.

Chaque structure AWS Flow Framework est conçue pour fonctionner de manière idiomatique dans lelangage pour lequel elle a été créée Vous pouvez donc travailler naturellement avec le langage de votrechoix pour mettre en œuvre les flux de travail tout en tirant parti d'Amazon SWF.

Il y a un AWS Framework de flux pour Java. Manuel du développeur AWS Flow Framework pourJava fournit des informations sur la façon d'obtenir, de configurer et d'utiliser le composant AWS FlowFramework for Java.

Version de l'API 2012-01-25146

Page 153: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDocumentation des kits SDK AWS

Pour obtenir la liste des classes, des méthodes et des annotations utilisées par cette structure, reportez-vous à la AWS Flow Framework for JavaRéférence d'API.

Documentation des kits SDK AWSLes kits de développement logiciel AWS (SDK) donnent accès à Amazon SWF dans de nombreuxlangages de programmation. Ces kits SDK sont étroitement liés à l'API HTTP, mais fournissent égalementdes interfaces de programmation spécifiques à certains langages pour des fonctionnalités Amazon SWFspécifiques. Pour plus d'informations sur chaque kit SDK, cliquez sur les liens ci-dessous.

Note

Seuls les kits SDK compatibles avec Amazon SWF au moment de la rédaction sont répertoriésici. Pour obtenir une liste complète des kits SDK AWS disponibles, consultez la page Outils pourAmazon Web Services.

Java:

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

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for Java. Pouraccéder directement aux sections Amazon SWF dans la référence du kit SDK, vous pouvez égalementcliquer sur ces liens :• Classe : Client de flux de travail AmazonSimple• Classe : Client de flux de travail simple Amazon• Interface : Flux de travail AmazonSimple• Interface : Flux de travail AmazonSimpleAsync

JavaScript

AWS SDK for JavaScript permet aux développeurs de créer des bibliothèques ou des applications quiutilisent les services AWS à l'aide d'une API facile d'utilisation disponible dans le navigateur ou au seindes applications Node.js sur le serveur.

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK for JavaScript.Pour accéder directement à la section Amazon SWF dans la référence du kit SDK, vous pouvezégalement cliquer sur ce lien :• Classe : Flux de travail AWS.SimpleWorkflow

.NET .

Le kit Kit AWS SDK pour .NET est un package unique téléchargeable qui comprend des modèles deprojets Visual Studio, la bibliothèque AWS .NET, des exemples de code C# et de la documentation.Kit AWS SDK pour .NET permet aux développeurs Windows de créer plus facilement desapplications .NET pour Amazon SWF et d'autres services.

Pour afficher la documentation disponible, consultez la page Documentation Kit AWS SDK pour .NET.Pour accéder directement aux sections Amazon SWF dans la référence du kit SDK, vous pouvezégalement cliquer sur ces liens :• Namespace Flux de travail simple.Amazon• Namespace Flux de travail simple Amazon.Modèle

PHP

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

Pour afficher la documentation disponible, consultez la page Documentation AWS SDK pour PHP.Pour accéder directement à la section Amazon SWF dans la référence du kit SDK, vous pouvezégalement cliquer sur ce lien :

Version de l'API 2012-01-25147

Page 154: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurDocumentation AWS CLI

• Classe : Client d’approPython: .

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

Pour afficher la documentation disponible, consultez la page boto: A Python interface to Amazon WebServices. Pour accéder directement aux sections Amazon SWF de cette documentation, vous pouvezégalement cliquer sur ces liens :• Amazon SWF Didacticiel• Amazon SWF Référence

Ruby .

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

Pour afficher la documentation disponible, consultez la page Documentation Kit SDK AWS pour Ruby.Pour accéder directement à la section Amazon SWF dans la référence du kit SDK, vous pouvezégalement cliquer sur ce lien :• Classe : Flux de travail AWS : SimpleWorkflow

Documentation AWS CLIAWS Command Line Interface (AWS CLI) est un outil unifié qui permet de gérer vos services AWS. À partird'un seul et même outil pour vos téléchargements et configurations, vous pouvez contrôler, par ligne decommande, divers services AWS et les automatiser à l'aide de scripts.

Pour plus d'information sur l'AWS CLI, consultez la page AWS Command Line Interface.

Pour une vue d'ensemble des commandes disponibles pour Amazon SWF, consultez swf dans AWS CLICommand Reference.

Ressources Web pour Amazon Simple WorkflowService

Plusieurs ressources Web vous permettent d'en savoir plus sur Amazon SWF ou de comprendre commentutiliser le service et développer des flux de travail.

Rubriques• Forum Amazon SWF (p. 148)• FAQ Amazon SWF (p. 149)• Vidéos Amazon SWF (p. 149)

Forum Amazon SWFLe forum Amazon SWF est un endroit qui vous permet de communiquer avec d'autres développeursAmazon SWF et avec des membres de l'équipe de développement Amazon SWF d'Amazon. Vous pouvezdonc y trouver des réponses à vos questions.

Vous pouvez visiter le forum sur : Forum Amazon Simple Workflow Service. Vous devez être connecté àvotre compte AWS pour afficher le forum.

Version de l'API 2012-01-25148

Page 155: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurFAQ Amazon SWF

FAQ Amazon SWFLa FAQ Amazon SWF apporte des réponses aux questions fréquentes relatives à Amazon SWF. Elle inclutune vue d'ensemble des cas d'utilisation courants, des différences entre Amazon SWF et d'autres services,et plus encore.

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

Vidéos Amazon SWFLa chaîne Amazon Web Services sur YouTube fournit des vidéos de formation pour l'ensemble desservices web Amazon, y compris Amazon SWF.

Les vidéos sont mises à jour fréquemment ; pour une liste complète des Amazon SWFpour les vidéos liéesà , vous pouvez utiliser la requête suivante : Flux de travail simple dans Amazon Web Services

Version de l'API 2012-01-25149

Page 156: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurContinuer à utiliser Flow Framework pour Ruby

Options pour les utilisateurs d'AWSFlow pour Ruby

AWS Flow Framework for Ruby n'est plus en cours de développement actif. Le code existant continuerade fonctionner indéfiniment, mais il n'y aura aucune nouvelle fonction ni version. Cette rubrique expliqueles options d'utilisation et de migration qui permettent de continuer à utiliser Amazon SWF, et fournit desinformations sur la migration vers Step Functions.

Option Description

Continuer à utiliser AWSFlow Framework pourRuby (p. 150)

Pour l'instant, AWS Flow Framework pour Ruby continue de fonctionner.Si vous ne faites rien, votre code continuera de fonctionner de la mêmemanière. Vous devez néanmoins prévoir de quitter AWS Flow Frameworkpour Ruby dans un avenir proche.

Migrer vers AWSFlow Framework pourJava (p. 150)

AWS Flow Framework pour Java reste en développement actif etcontinuera de faire l'objet de nouvelles fonctions et mises à jour.

Migrer vers AWS StepFunctions (p. 151)

AWS Step Functions permet de coordonner les composants d'applicationsdistribuées à l'aide de flux de travail visuels contrôlés par une machined'état.

Utiliser l'API SWFdirectement (p. 151),sans AWS FlowFramework

Vous pouvez continuer à travailler dans Ruby et à utiliser l'API SWFdirectement, au lieu d'AWS Flow Framework pour Ruby.

AWS Flow Framework, que ce soit pour Ruby ou Java, présente l'avantage de vous permettre devous concentrer sur votre logique du flux de travail. L'infrastructure gère la plupart des informations decommunication et de coordination, et la complexité est abstraite. Vous pouvez continuer à bénéficier dumême niveau d'abstraction en migrant vers AWS Flow Framework pour Java, ou interagir directement avecle kit SDK Amazon SWF.

Continuer à utiliser Flow Framework pour RubyÀ court terme, AWS Flow Framework for Ruby continuera de fonctionner de la même manière. Si vousdisposez de flux de travail écrits dans AWS Flow Framework for Ruby, ils continueront de fonctionner.Étant donné qu'il n'y aura plus ni mise à jour, ni support ni correctif de sécurité, vous devez planifier un plande migration pour quitter AWS Flow Framework for Ruby dans un avenir proche.

Migrer vers Flow Framework pour JavaAWS Flow Framework for Java demeure en développement actif. D'un point de vue conceptuel, AWSFlow Framework for Java est similaire à AWS Flow Framework for Ruby : vous pouvez continuer à vousconcentrer sur la logique de votre flux de travail, et l'infrastructure aide à gérer la logique du décideur etfacilite la gestion d'autres aspects d'Amazon SWF.

Version de l'API 2012-01-25150

Page 157: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeurMigrer vers AWS Step Functions

• AWS Flow Framework pour Java• Référence d'API AWS Flow Framework pour Java

Migrer vers AWS Step FunctionsAWS Step Functions fournit un service similaire à Amazon SWF, mais où votre logique de flux de travailest contrôlée par une machine d'état. Step Functions facilite la coordination des composants d'applicationsdistribuées et de microservices utilisant des flux de travail visuels. Vous développez les applications à partirde composants individuels qui réalisent chacun une fonction discrète, ou tâche, vous permettant de mettreà l'échelle et de modifier les applications rapidement. Step Functions offre un moyen fiable de coordonnerdes composants et de suivre les fonctions de votre application. Une console graphique permet de visualiserles composants de votre application en une série d'étapes. Il déclenche automatiquement chaque étape,en fait le suivi et la relance en cas d'erreur. Par conséquent, votre application est exécutée en permanencedans l'ordre et comme prévu. Step Functions enregistre l'état de chaque étape pour que vous puissiezdiagnostiquer et résoudre rapidement les problèmes éventuels.

Dans Step Functions, vous gérez la coordination de vos tâches à l'aide d'une machine d'état, écriteen JSON déclaratif et définie à l'aide du Langage des états d'Amazon. En utilisant une machine d'état,vous n'avez pas besoin d'écrire et de maintenir un programme décideur pour contrôler la logique devotre application. Step Functions fournit une approche intuitive, productive et agile pour coordonner lescomposants applicatifs à l'aide de flux de travail visuels. Vous devriez envisager d'utiliser AWS StepFunctions pour toutes vos nouvelles applications, et Step Functions fournit une plateforme parfaitementadaptée afin d'y migrer les flux de travail actuellement implémentés dans AWS Flow Framework for Ruby.

Pour vous aider à migrer vos tâches dans Step Functions, tout en continuant à tirer parti de voscompétences en langage Ruby, Step Functions fournit un exemple de travail d'activité Ruby. Cet exemplerepose sur les bonnes pratiques d'implémentation d'un travail d'activité. Vous pouvez l'utiliser commemodèle pour migrer la logique de vos tâches vers Step Functions. Pour plus d'informations, consultez larubrique Exemple d'activité de travail en Ruby dans Manuel du développeur AWS Step Functions.

Note

Pour de nombreux clients, la migration vers Step Functions depuis AWS Flow Framework forRuby est la meilleure option. Mais si vous avez besoin que des signaux interviennent dans vosprocessus, ou si vous avez besoin de lancer des processus enfant qui renvoient un résultat à unparent, il est préférable d'utiliser l'API Amazon SWF directement ou de migrer vers AWS FlowFramework for Java.

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

• Manuel du développeur AWS Step Functions• Référence API AWS Step Functions• Référence de la ligne de commande AWS Step Functions

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

• Amazon Simple Workflow Service Guide du développeur• Amazon Simple Workflow Service API Reference

Version de l'API 2012-01-25151

Page 158: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Historique du Amazon SimpleWorkflow Service Guide dudéveloppeur

Le tableau suivant répertorie les modifications importantes apportées à cette documentation depuis ladernière publication du manuel Amazon Simple Workflow Service Guide du développeur.

• Version d'API : 2012-01-25• Dernière mise à jour de la documentation : Août 2018

Modification Description Date demodification

Nouvelle fonction Amazon Simple Workflow Service prend en charge lesautorisations IAM à l'aide de balises. Pour plus d'informations,consultez les rubriques suivantes.

• Balises (p. 64)• Gestion de balises Amazon SWF (p. 64)• Balisage des exécutions de flux de travail Amazon

SWF (p. 65)• Contrôle de l'accès aux domaines Amazon SWF à l'aide de

balises IAM (p. 66)• TagResource

• UntagResource

• ListTagsForResource

• RegisterDomain

20 juin 2019

Nouvelle fonction Amazon Simple Workflow Service est désormais disponibledans la région Europe (Stockholm).

12 décembre2018

Mise à jour Amélioration de la rubrique Amazon Simple Workflow Servicesur l'intégration de CloudTrail. Voir Logging Amazon SimpleWorkflow Service API Calls with AWS CloudTrail (p. 97).

7 août 2018

Mise à jour Ajout d'informations sur la nouvelle métrique PendingTaskspour CloudWatch. Pour plus d'informations, consultezIndicateurs Amazon SWF (p. 89).

18 juin 2018

Mise à jour Mise en évidence de la syntaxe améliorée dans les exemplesde code.

29 mars 2018

Mise à jour Ajout d'une rubrique décrivant les options disponibles pourles utilisateurs d'AWS Flow pour Ruby afin de quitter cetteplateforme. Pour plus d'informations, consultez Options pour lesutilisateurs d'AWS Flow pour Ruby (p. 150).

9 mars 2018

Mise à jour Amélioration de la navigation de la rubrique sur les conceptsavancés. Voir Concepts avancés d'Amazon SWF (p. 61).

19 février 2018

Version de l'API 2012-01-25152

Page 159: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Modification Description Date demodification

Mise à jour Amélioration de la documentation sur les métriquesCloudWatch par l'ajout d'informations relatives aux statistiquesvalides. Voir Métriques Amazon SWF pour CloudWatch (p. 88).

4 décembre2017

Mise à jour Modification de la tables des matières pour améliorer lastructure du document. Ajout de nouvelles informations surMétriques des événements d'API et de décision (p. 89).

9 novembre 2017

Mise à jour La section Amazon SWF Quotas (p. 135) a été mise à jour pourinclure les limitations pour toutes les régions.

18 octobre 2017

Mise à jour task_list a été modifié en workflowId dans le SubscriptionWorkflow Tutorial with Amazon SWF and Amazon SNS (p. 9)pour éviter toute confusion avec activity_list.

25 juillet 2017

Mise à jour Les exemples de code ont été nettoyés dans ce guide. 5 juin 2017

Mise à jour Simplification et amélioration de l'organisation et du contenu dece guide.

19 mai 2017

Mise à jour Mises à jour et correctifs de liens. 16 mai 2017

Mise à jour Mises à jour et correctifs de liens. 1 octobre 2016

Prise en charge destâches Lambda

Vous pouvez spécifier des tâches Lambda en plus des tâchesd'activité traditionnelles dans les flux de travail. Pour plusd'informations, consultez Tâches AWS Lambda (p. 116).

21 juillet 2015

Prise en charge de ladéfinition de la prioritédes tâches

Amazon SWF prend désormais en charge la définition de lapriorité des tâches dans une liste de tâches et essaie d'envoyercelles dont la priorité est élevée avant celles dont la priorité estfaible. Pour découvrir comment définir la priorité des tâchespour les flux de travail et les activités, consultez la sectionDéfinition de la priorité des tâches (p. 129).

17 décembre2014

Mise à jour Ajout d'une rubrique qui décrit comment journaliser les appelsd'API Amazon SWF avec CloudTrail : Logging Amazon SimpleWorkflow Service API Calls with AWS CloudTrail (p. 97).

8 mai 2014

Mise à jour Deux rubriques concernant les métriques CloudWatch pourAmazon SWF ont été ajoutées : Métriques Amazon SWF pourCloudWatch (p. 88), qui fournit la liste et les descriptions desmétriques prises en charge, et Viewing Amazon SWF Metricsfor CloudWatch using the AWS Management Console (p. 94),qui fournit des informations sur la façon d'afficher les métriqueset de définir des alarmes via AWS Management Console.

28 avril 2014

Mise à jour Une section a été ajoutée : Ressources Amazon SimpleWorkflow Service (p. 143). Cette section fournit desinformations de référence sur les services, ainsi que sur ladocumentation supplémentaire, les exemples, le code et lesautres ressources Web pour les développeurs Amazon SWF.

19 mars 2014

Mise à jour Un didacticiel sur le flux de travail a été ajouté. VoirSubscription Workflow Tutorial with Amazon SWF and AmazonSNS (p. 9).

25 octobre 2013

Version de l'API 2012-01-25153

Page 160: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Modification Description Date demodification

Mise à jour Ajout d'informations et d'exemple AWS CLI (p. 104). 26 août 2013

Mise à jour Mises à jour et correctifs. 1 août 2013

Mise à jour Mise à jour du document pour décrire comment utiliser IAMpour un contrôle d'accès.

22 février 2013

Première version Il s'agit de la première version du manuel Amazon SimpleWorkflow Service Guide du développeur.

16 octobre 2012

Version de l'API 2012-01-25154

Page 161: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

Glossaire AWSPour la terminologie AWS la plus récente, consultez le Glossaire AWS dans le document AWS GeneralReference.

Version de l'API 2012-01-25155

Page 162: Amazon Simple Workflow Service · Amazon SWF offre des fonctionnalités prenant en charge une grande variété d'exigences applicatives. Il convient aux cas d'utilisation qui nécessitent

Amazon Simple Workflow Service Manuel du développeur

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

Version de l'API 2012-01-25clvi