Sondage sur le statut du poste avec Lambda et AWS Batch - AWS Step Functions

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

Sondage sur le statut du poste avec Lambda et AWS Batch

Cet exemple de projet crée un AWS Batch enquêteur d'offres d'emploi. Il met en œuvre un AWS Step Functions machine à états qui utilise AWS Lambda pour créer une boucle Wait d'état qui vérifie un AWS Batch travail.

Cet exemple de projet crée et configure toutes les ressources afin que votre flux de travail Step Functions soumette un AWS Batch tâche, et attendra que cette tâche soit terminée avant de se terminer avec succès.

Note

Vous pouvez également implémenter ce modèle sans utiliser de fonction Lambda. Pour plus d'informations sur le contrôle AWS Batch directement, voirIntégrer les services avec Step Functions.

Cet exemple de projet crée la machine à états, deux fonctions Lambda et un AWS Batch file d'attente, et configure les IAM autorisations associées.

Pour plus d'informations sur la façon dont AWS Step Functions peut contrôler d'autres AWS services, voirIntégrer les services avec Step Functions.

Étape 1 : Création de la machine à états

  1. Ouvrez la console Step Functions et choisissez Create state machine.

  2. Tapez Job Poller dans le champ de recherche, puis choisissez Job Poller dans les résultats de recherche renvoyés.

  3. Choisissez Next (Suivant) pour continuer.

  4. Choisissez Exécuter une démonstration pour créer une version en lecture seule et un ready-to-deploy flux de travail, ou choisissez Construire dessus pour créer une définition de machine à états modifiable sur laquelle vous pourrez vous appuyer pour la déployer ultérieurement.

    Cet exemple de projet déploie les ressources suivantes :

    • Trois fonctions Lambda pour soumettre un AWS Batch tâche, obtenir le statut actuel du document soumis AWS Batch tâche, et l'état d'achèvement de la tâche finale.

    • Un AWS Batch tâche

    • Un AWS Step Functions machine d'état

    • Relié AWS Identity and Access Management (IAM) rôles

    L'image suivante montre le graphique du flux de travail de l'exemple de projet Job Poller :

    Graphique du flux de travail de l'exemple de projet Job Poller.
  5. Choisissez Utiliser le modèle pour poursuivre votre sélection.

Les prochaines étapes dépendent de votre choix précédent :

  1. Exécuter une démonstration : vous pouvez passer en revue la machine d'état avant de créer un projet en lecture seule avec des ressources déployées par AWS CloudFormation à votre Compte AWS.

    Vous pouvez consulter la définition de la machine d'état et, lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer le projet et créer les ressources.

    Le déploiement peut prendre jusqu'à 10 minutes pour créer des ressources et des autorisations. Vous pouvez utiliser le lien Stack ID pour suivre les progrès dans AWS CloudFormation.

    Une fois le déploiement terminé, vous devriez voir votre nouvelle machine d'état dans la console.

  2. Tirez parti de cette information : vous pouvez revoir et modifier la définition du flux de travail. Vous devrez peut-être définir des valeurs pour les espaces réservés dans l'exemple de projet avant de tenter d'exécuter votre flux de travail personnalisé.

Note

Des frais standard peuvent s'appliquer pour les services déployés sur votre compte.

Étape 2 : Exécuter la machine à états

Une fois que toutes les ressources ont été provisionnées et déployées, la boîte de dialogue Démarrer l'exécution s'affiche avec un exemple de saisie similaire à celui ci-dessous.

{ "jobName": "my-job", "jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1", "jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449", "wait_time": 60 }
Note

wait_time ordonne à l'état Wait de faire une boucle toutes les soixante secondes.

  • Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :

    1. (Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.

      ASCIINon-noms et journalisation

      Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.

    2. (Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée sous la formeJSON. Vous pouvez ignorer cette étape si vous lancez une démonstration.

    3. Choisissez Start execution (Démarrer l'exécution).

    La console Step Functions vous dirige vers une page de détails d'exécution où vous pouvez choisir les états dans la vue graphique pour explorer les informations associées dans le Détails de l'étape volet.

    Par exemple, pour consulter l'évolution du statut de votre AWS Batch tâche et résultats en boucle de votre exécution, choisissez l'onglet Sortie.

    L'image suivante montre le graphique de l'état d'exécution dans la vue graphique. Il affiche également le résultat d'exécution de l'étape sélectionnée dans l'onglet Sortie.

    Résultat d'exécution pour l'étape sélectionnée nommée Get Final Job Status dans la vue graphique.

Exemple de code de machine d'état

Dans cet exemple de projet, la machine à états s'intègre à AWS Lambda pour soumettre un AWS Batch travail. Parcourez cet exemple de machine à états pour découvrir comment Step Functions contrôle Lambda et AWS Batch.

Pour plus d'informations sur la façon dont AWS Step Functions peut contrôler d'autres AWS services, voirIntégrer les services avec Step Functions.

{ "Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.", "StartAt": "Submit Job", "States": { "Submit Job": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r", "ResultPath": "$.guid", "Next": "Wait X Seconds" }, "Wait X Seconds": { "Type": "Wait", "SecondsPath": "$.wait_time", "Next": "Get Job Status" }, "Get Job Status": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "Next": "Job Complete?", "InputPath": "$.guid", "ResultPath": "$.status" }, "Job Complete?": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "FAILED", "Next": "Job Failed" }, { "Variable": "$.status", "StringEquals": "SUCCEEDED", "Next": "Get Final Job Status" } ], "Default": "Wait X Seconds" }, "Job Failed": { "Type": "Fail", "Cause": "AWS Batch Job Failed", "Error": "DescribeJob returned FAILED" }, "Get Final Job Status": { "Type": "Task", "Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "InputPath": "$.guid", "End": true } } }