Planifier un flux de travail sans serveur

avec AWS Step Functions et Amazon CloudWatch

L’automatisation de votre réponse aux événements opérationnels des ressources de votre compte AWS peut vous aider à réduire les frais opérationnels liés à votre infrastructure du Cloud AWS. Pour vous donner un exemple concret, imaginez que vous êtes un ingénieur DevOps ou un responsable informatique, et que vous souhaitez automatiser la les tâches ETL, la synchronisation des données ou la sécurité.

Pour résoudre ce problème, vous pouvez exécuter un flux de travail sans serveur selon une planification temporelle. Amazon CloudWatch Events offre un flux d'événements de système quasiment en temps réel qui décrit les modifications et les notifications apportées à vos ressources AWS. À partir de ce flux, vous pouvez créer des règles afin d’acheminer des événements spécifiques vers AWS Step Functions et invoquer une machine d’état pour réaliser ultérieurement des opérations de traitement. AWS Step Functions vous permet de coordonner plusieurs services dans des flux de travail sans serveur afin de créer et mettre à jour rapidement des processus automatisés.

Dans ce didacticiel, vous utiliserez Step Functions pour orchestrer un flux de travail sans serveur en réponse à une événement CloudWatch. Tout d’abord, vous créerez une machine d’état très simple à l’aide d’AWS Step Functions. Ensuite, vous utiliserez Amazon CloudWatch Events pour configurer une règle qui exécute votre machine d’état toutes les minutes. Bien que ce didacticiel invoque un flux de travail respectant une planification temporelle, il peut être généralisé et intégré à d’autres services AWS qui génèrent des événements.

Dans ce didacticiel, vous utiliserez AWS Step Functions et Amazon CloudWatch. Ces deux services sont inclus dans l'offre gratuite AWS.

Ce didacticiel nécessite d'avoir un compte AWS.

Il n'y a aucun frais supplémentaire pour Step Functions ou CloudWatch. Les ressources que vous créez dans ce didacticiel sont éligibles à l'offre gratuite. 

En savoir plus sur l’offre gratuite >>


Étape 1. Créer un rôle AWS Identity and Access Management (IAM)

AWS Step Functions peut exécuter du code et accéder à d'autres ressources AWS (par exemple, des données stockées dans des compartiments Amazon S3). Pour maintenir la sécurité, vous devez accorder à Step Functions l'accès à ces ressources à l'aide d'AWS Identity and Access Management (IAM).


a. Ouvrez AWS Management Console dans une nouvelle fenêtre de navigateur afin de garder le guide ouvert. Lorsque cet écran se charge, saisissez votre nom d'utilisateur et votre mot de passe pour commencer. Saisissez ensuite IAM dans la barre de recherche, et sélectionnez IAM pour ouvrir la console de service.

(Cliquez pour agrandir)


b.  Cliquez sur Rôles, puis sélectionnez Créer un rôle.

(Cliquez pour agrandir)


c. Depuis la page Sélectionner le type d'entité de confiance, sous service AWS, sélectionnez Step Functions dans la liste, puis Suivant : Autorisations.

(Cliquez pour agrandir)


d. Sur la page Attacher une stratégie d'autorisation, sélectionnez Suivant : Vérification.

(Cliquez pour agrandir)


e. Sur la page Vérification, saisissez step_functions_basic_execution pour le champ Nom du rôle, puis cliquez sur Créer un rôle.

(Cliquez pour agrandir)


f. Vous venez de créer un nouveau rôle IAM.

(Cliquez pour agrandir)


Étape 2. Créer une machine d'état AWS Step Functions

Dans cette étape, vous créerez une machine d’état simple et s’exécutant indépendamment en utilisant un état Passe. Un état Passe transmet en toute simplicité ses entrées à ses sorties, sans effectuer aucun travail.

Dans un scénario réel, votre flux de travail sans serveur peut faire tout ce dont vous avez besoin. Vous pourriez coordonner plusieurs fonctions Lambda dans le but d’effectuer des tâches, de prendre des décisions, etc. Cependant, nous préférons conserver un flux de travail simple pour ne pas compliquer ce didacticiel.


a. Ouvrez la console AWS Step Functions. Step Functions donne accès à diverses machines d’état prédéfinies comme modèles. Pour ce didacticiel, vous créerez une machine d’état à l’aide du modèle Hello World. Sur la page Créer une machine d’état, sélectionnez Modèles puis Hello World.

(Cliquez pour agrandir)


b. Dans la section Détails, saisissez le Nom de votre machine d’état en tant que ScheduledWorkflow, puis, sous Rôle IAM, sélectionnez J’utiliserai un rôle existant. Sous Rôles IAM existants, sélectionnez le rôle IAM que vous avez créé, step_functions_basic_execution.

(Cliquez pour agrandir)


c. Step Functions renseigne automatiquement le nom de votre machine d’état. De plus, Step Functions remplit le volet Définition de la machine d’état avec la description Amazon States Language de la machine d’état. Pour en savoir plus sur la manière de définir les machines d’état, consultez la page Structure des machines d’état.

Apportons quelques modifications simples à votre machine d’état :

Sur les lignes 2 et 5, remplacez « HelloWorld » par « Do Something »
Sur la ligne 7, remplacez « Hello World ! » par « Work complete ! »

Ensuite, cliquez sur le bouton d’actualisation situé à côté de votre flux de travail visuel pour mettre à jour le diagramme de la machine d’état et intégrer vos modifications.

(Cliquez pour agrandir)


d. Choisissez Créer une machine d'état. Votre machine d’état est désormais prête à être exécutée.

(Cliquez pour agrandir)


Étape 3. Créer une règle Amazon CloudWatch Events

Maintenant que vous avez créé votre machine d’état, vous pouvez créer une règle Amazon CloudWatch Events qui exécute votre machine d’état selon une planification. Amazon CloudWatch Events délivre en temps quasi réel des flux d'événements système qui décrivent les modifications des ressources Amazon Web Services (AWS). À l’aide de simples règles configurables rapidement, vous pouvez faire correspondre les événements et les acheminer vers un(e) ou plusieurs flux/fonctions cibles.


a. Ouvrez un nouvel onglet dans votre navigateur. Accédez à la console CloudWatch Events en entrant CloudWatch dans la barre de recherche.

(Cliquez pour agrandir)


b. Choisissez Événements, puis Créer une règle.  

(Cliquez pour agrandir)


c. La page Étape 1 : Créer une règle s’affiche. Dans la section Source d’événement, sélectionnez Planifier. Dans le champ Taux fixe de, entrez 1 et conservez l’unité « Minutes » sélectionnée.

(Cliquez pour agrandir)


d. Dans la section Cibles, choisissez Ajouter une cible. Choisissez Machine d’état Step Functions dans la liste, puis sélectionnez votre machine d’état ScheduledWorkflow.

Choisissez Configurer l’entrée, puis sélectionnez Événement correspondant. Cela permettra de transmettre les détails de CloudWatch Event en tant qu’entrée vers Step Functions à chaque fois qu’il exécute une instance de votre machine d’état.

Sélectionnez Créer un nouveau rôle pour cette ressource spécifique, puis cliquez sur Configurer les détails.

(Cliquez pour agrandir)


e. La page Étape 2 : Configurer les détails de la règle s’affiche. Entrez execute_state_machine en tant que Nom de votre règle, ne décochez pas la case Activé pour l’état, puis sélectionnez Créer une règle.

La règle est créée, et la pageRègles s’affiche et détaille l’ensemble de vos règles CloudWatch Events.

Une nouvelle exécution de votre machine d’état aura lieu toutes les minutes.

(Cliquez pour agrandir)


Étape 4. Personnaliser la façon dont la machine d’état gère les entrées et les sorties

Ensuite, vous personnaliserez la façon dont la machine d’état gère les entrées et les sorties. Comprendre comment les informations sont transférées d’un état à l’autre et apprendre à filtrer et à manipuler ces données vous aidera à concevoir et à implémenter efficacement des flux de travail dans AWS Step Functions.


a. Retournez à la console Step Functions. Votre machine d’état ScheduledWorkflow doit rester affichée. Cliquez sur Modifier.

(Cliquez pour agrandir)


b. Dans la fenêtre Définition de la machine d’état, reportez-vous à la ligne 7 de votre machine d’état. Le champ Résultat de l’état Passe indique la sortie qui doit être transmise à l’état suivant. Étant donné que votre machine d’état dispose uniquement d’un état, le message « Work complete ! » sera transmis à l’état final de votre flux de travail.

Vous pouvez vous rappeler que l’état Passe de Step Functions permet de transmettre son entrée à sa sortie. Vous pouvez utiliser le champ ResultPath pour modifier la sortie d’un état. Par exemple, vous pouvez remplacer l’entrée de l’état par le résultat produit (par exemple, la sortie de l’état d’une tâche de la fonction Lambda).

Pour associer l’entrée de l’état à son résultat, insérez une nouvelle ligne après la ligne 7 et saisissez :

"ResultPath": "$.taskresult",

Cela permettra d’associer les détails de l’événement CloudWatch qui a invoqué l’exécution de la machine d’état à la sortir de l’état Passe dans ce cas, « Work complete ! ». Pour en savoir plus, consultez la page Traitement des entrées et sorties dans Step Functions.

(Cliquez pour agrandir)


c. Cliquez sur Enregistrer.

(Cliquez pour agrandir)


Étape 5. Confirmer que le flux de travail fonctionne normalement

Maintenant que vous avez activé la règle CloudWatch Events, CloudWatch déclenche toutes les minutes une exécution de votre machine d’état. Dans cette étape, vous observerez ces exécutions et vérifierez que les détails de CloudWatch Event sont capturés par Step Functions.


a. Retournez à la console Step Functions, puis cliquez sur ScheduledWorkflow dans l’aide à la navigation située en haut de la page.

(Cliquez pour agrandir)


b. Sous Exécutions, vous pouvez observer les exécutions que déclenche CloudWatch Events. Cliquez sur le bouton d’actualisation pour mettre à jour la fenêtre et voir apparaître les nouvelles exécutions de votre machine d’état. Attendez quelques minutes pour qu’au moins deux instances de votre flux de travail soient déclenchées.

(Cliquez pour agrandir)


c. Faites un clic droit sur une des exécutions et ouvrez le lien dans un nouvel onglet de votre navigateur. Répétez l’opération pour une autre exécution de votre machine d’état.

Sur chaque onglet, cliquez sur l’état « Do Something » qui figure sur le volet de votre flux de travail visuel pour remplir le volet Détails de l’étape situé à droite.

En cliquant sur Entrées, vous pouvez voir les détails de l’événement correspondant dans CloudWatch. Remarquez les différences entre chaque événement, par exemple les champs « ID » et « durée ».

(Cliquez pour agrandir)


d. Sur chaque onglet, affichez les Sorties sous le volet Détails de l’étape. Vous pouvez voir que l’entrée a été associée à la sortie de l’état « Do Something ».

(Cliquez pour agrandir)


Étape 6. Résilier les ressources

Dans cette étape, vous allez résilier vos ressources associées à AWS Step Functions et à Amazon CloudWatch.

Important : il est conseillé de résilier les ressources qui ne sont pas utilisées de façon active, afin de réduire les coûts. Des ressources non résiliées peuvent entraîner des frais.


a. Fermez tous les onglets d’exécution de votre machine d’état. En haut de la fenêtre de Step Functions, cliquez sur Machines d'état.

(Cliquez pour agrandir)


b. Dans la fenêtre Machines d’état, cliquez sur la machine d'état que vous avez créée lors de ce didacticiel, puis sélectionnez Supprimer. Confirmez l'action en sélectionnant Supprimer la machine d'état dans la boîte de dialogue. Votre machine d'état sera supprimée en l’espace d’une minute ou deux, une fois que Step Functions aura confirmé que toute exécution en cours était terminée.

(Cliquez pour agrandir)


c. Ensuite, vous supprimerez votre règle Amazon CloudWatch Events. Dans la console CloudWatch, cliquez sur Actions, puis sur Supprimer. Confirmez la suppression en cliquant de nouveau sur Supprimer.

(Cliquez pour agrandir)


d. Cliquez sur Services, puis saisissez IAM dans la barre de recherche pour accéder à la console IAM.

(Cliquez pour agrandir)


e. Cliquez sur Rôles.

(Cliquez pour agrandir)


f. Sélectionnez les deux rôles IAM créés pour ce didacticiel, puis cliquez sur Supprimer le rôle. Confirmez la suppression en cliquant sur Oui, supprimer dans la boîte de dialogue.

Vous pouvez désormais vous déconnecter d’AWS Management Console.

(Cliquez pour agrandir)


Félicitations !

Vous venez de planifier avec succès un flux de travail sans serveur qui s’exécute toutes les minutes.
AWS Step Functions vous permet d’inspecter et de surveiller l’exécution des tâches récurrentes afin de confirmer qu’elles sont bien systématiquement exécutées. En associant AWS Step Functions à Amazon CloudWatch Events, vous pouvez automatiser les tâches quotidiennes, hebdomadaires et mensuelles, ou encore déclencher l’exécution de votre flux de travail Step Functions lorsque des conditions spécifiques sont remplies.

Découvrir AWS Step Functions

Explorez la documentation