Exécutez un AWS Batch travailler avec Lambda - 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.

Exécutez un AWS Batch travailler avec Lambda

Cet exemple de projet montre comment utiliser Step Functions pour prétraiter des données avec AWS Lambda fonctions puis orchestrez AWS Batch emplois.

Dans ce projet, Step Functions utilise une machine à états pour appeler une fonction Lambda afin d'effectuer un prétraitement simple avant un AWS Batch le travail est soumis. Plusieurs tâches peuvent être invoquées en fonction du résultat ou du succès de la précédente.

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

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

  2. Tapez Batch job with Lambda dans le champ de recherche, puis choisissez Batch job with Lambdaà partir des résultats de recherche renvoyés.

  3. Choisissez Next (Suivant) pour continuer.

  4. Choisissez Exécuter une démo pour créer un ready-to-deploy flux de travail et un mode de travail en lecture seule, 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 :

    • A Lambda fonction

    • 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 pour le travail Batch avec Lambdaexemple de projet :

    Graphique du flux de travail de la tâche Batch avec Lambdaexemple de projet.
  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

  1. Sur la page State machines, choisissez votre exemple de projet.

  2. Sur la page d'exemple de projet, choisissez Démarrer l'exécution.

  3. 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.

Exemple de code de machine d'état

Dans cet exemple de projet, la machine à états s'intègre à AWS Batch et Amazon SNS en transmettant les paramètres directement à ces ressources.

Parcourez cet exemple de machine à états pour voir comment Step Functions contrôle AWS Batch et Amazon SNS en vous connectant au nom de ressource Amazon (ARN) Resource sur le terrain et en accédant Parameters au serviceAPI.

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 for using batch job with pre-processing lambda", "StartAt": "Generate batch job input", "TimeoutSeconds": 3600, "States": { "Generate batch job input": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.batch_input", "Parameters": { "FunctionName": "<GENERATE_BATCH_JOB_INPUT_LAMBDA_FUNCTION_NAME>" }, "Next": "Submit Batch Job" }, "Submit Batch Job": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobName": "BatchJobFanOut", "JobQueue": "<BATCH_QUEUE_ARN>", "JobDefinition": "<BATCH_JOB_DEFINITION_ARN>", "Parameters.$": "$.batch_input" }, "End": true } } }

IAMExemple

Ces exemples AWS Identity and Access Management (IAM) les politiques générées par l'exemple de projet incluent le moindre privilège nécessaire pour exécuter la machine à états et les ressources associées. Nous vous recommandons de n'inclure que les autorisations nécessaires dans vos IAM politiques.

Exemple BatchJobWithLambdaAccessPolicy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-west-2:123456789012:ManageBatchJob-SNSTopic-JHLYYG7AZPZI" ], "Effect": "Allow" }, { "Action": [ "batch:SubmitJob", "batch:DescribeJobs", "batch:TerminateJob" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-west-2:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule" ], "Effect": "Allow" } ] }
Exemple InvokeGenerateBatchJobMapLambdaPolicy
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:StepFunctionsSample-BatchWithL-GenerateBatchJobMap-444455556666", "Effect": "Allow" } ] }

Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.