Itérer simultanément sur les éléments d'un flux de travail Step Functions - 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.

Itérer simultanément sur les éléments d'un flux de travail Step Functions

Dans la rubrique précédenteDéfinissez des tâches parallèles, vous avez appris à exécuter des branches distinctes d'étapes en parallèle à l'aide de l'Parallelétat. À l'aide de Map l'état, vous pouvez exécuter un ensemble d'étapes de flux de travail pour chaque élément d'un ensemble de données. Les itérations de Map l'état s'exécutent en parallèle, ce qui permet de traiter rapidement un ensemble de données.

En incluant l'Mapétat dans vos flux de travail, vous pouvez effectuer des tâches, telles que le traitement des données, en utilisant l'un des deux modes Modes de traitement de l'état des cartes : en ligne et en mode distribué. Pour configurer un Map état, vous définissez unItemProcessor, qui contient des JSON objets qui spécifient le mode de traitement de Map l'état et sa définition. Vous exécuterez l'Mapétat dans le mode Inline par défaut, qui prend en charge jusqu'à 40 itérations simultanées. Lorsque vous exécutez l'Mapétat en mode distribué, il prend en charge jusqu'à 10 000 exécutions parallèles de flux de travail enfants.

Lorsque l'exécution de votre flux de travail entre dans Map cet état, elle itère sur un JSON tableau spécifié dans l'entrée d'état. Pour chaque élément du tableau, l'itération correspondante s'exécute dans le contexte du flux de travail contenant l'Mapétat. Lorsque toutes les itérations sont terminées, l'Mapétat renvoie un tableau contenant la sortie pour chaque élément traité par leItemProcessor.

Vous utiliserez l'Mapétat en mode Inline pour récupérer le pointage de crédit d'un candidat en effectuant une itération sur un ensemble de bureaux de crédit. Pour ce faire, vous devez d'abord récupérer les noms de toutes les agences de crédit stockées dans une table Amazon DynamoDB, puis vous utilisez l'état pour parcourir Map la liste des agences de crédit afin de récupérer la cote de solvabilité du candidat déclarée par chacune de ces agences.

Étape 1 : créer une table DynamoDB pour stocker le nom de toutes les agences de crédit

Au cours de cette étape, vous allez créer une table nommée à GetCreditBureau l'aide de la console DynamoDB. La table utilise l'attribut de chaîne Name comme clé de partition. Dans ce tableau, vous enregistrez le nom de toutes les agences de crédit auprès desquelles vous souhaitez obtenir le pointage de crédit du demandeur.

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

  2. Dans le volet de navigation de la console, choisissez Tables, puis Create table.

  3. Saisissez les informations de la table comme suit :

    1. Comme Nom de la table, entrez GetCreditBureau.

    2. Pour la clé de partition, saisissez Name.

    3. Conservez les sélections par défaut, puis choisissez Create table.

  4. Une fois votre table créée, dans la liste Tables, GetCreditBureauchoisissez-la.

  5. Choisissez Actions, puis sélectionnez Créer un élément.

  6. Dans Valeur, entrez le nom d'une agence de crédit. Par exemple, CredTrack.

  7. Choisissez Créer un élément.

  8. Répétez ce processus et créez des éléments pour les noms d'autres bureaux de crédit. Par exemple : KapFinn et CapTrust.

Étape 2 : Mettre à jour la machine à états — Extraire les résultats depuis la table DynamoDB

Dans la console Step Functions, vous allez ajouter un Task état et utiliser l'AWS SDKintégration pour récupérer les noms des agences de crédit dans la table DynamoDB que vous avez créée à l'étape 1. Vous utiliserez le résultat de cette étape comme entrée pour l'Mapétat que vous ajouterez ultérieurement dans votre flux de travail.

  1. Ouvrez la machine CreditCardWorkflowd'état pour la mettre à jour.

  2. Choisissez l'état Obtenir la liste des agences de crédit.

  3. Pour APIParamètres, spécifiez la valeur du nom de la table sous la formeGetCreditBureau.

Étape 3 : Création d'une fonction Lambda qui renvoie les cotes de crédit de tous les bureaux de crédit

Au cours de cette étape, vous créez une fonction Lambda qui reçoit les noms de toutes les agences de crédit en entrée et renvoie la cote de solvabilité du demandeur pour chacune de ces agences de crédit. Cette fonction Lambda sera invoquée à partir de l'Mapétat que vous ajouterez à votre flux de travail.

  1. Créez une fonction Lambda 16.x de Node.js et nommez-la. get-credit-score

  2. Sur la page intitulée get-credit-score, collez le code suivant dans la zone Code source.

    function getScore(arr) { let temp; let i = Math.floor((Math.random() * arr.length)); temp = arr[i]; console.log(i); console.log(temp); return temp; } const arrScores = [700, 820, 640, 460, 726, 850, 694, 721, 556]; exports.handler = (event, context, callback) => { let creditScore = getScore(arrScores); callback(null, "Credit score pulled is: " + creditScore + "."); };
  3. Déployez la fonction Lambda.

Étape 4 : Mettre à jour la machine à états — ajouter un état de carte pour récupérer de manière itérative les cotes de crédit

Dans la console Step Functions, vous ajoutez un Map état qui invoque la fonction get-credit-scoreLambda pour vérifier la cote de solvabilité du candidat pour toutes les agences de crédit renvoyées par l'état Get list of Credit Bureaus.

  1. Ouvrez la machine CreditCardWorkflowd'état pour la mettre à jour.

  2. Choisissez l'option Obtenir les scores de tous les bureaux de crédit de l'État.

  3. Dans l'onglet Configuration, choisissez Fournir un chemin vers le tableau d'éléments, puis entrez$.Items.

  4. Choisissez Get all scores step inside the Map state.

  5. Dans l'onglet Configuration, assurez-vous que Type d'intégration, Optimisé est sélectionné.

  6. Dans Nom de la fonction, commencez à saisir le nom de la fonction get-credit-scoreLambda et choisissez-le dans la liste déroulante qui apparaît.

  7. Pour Charge utile, sélectionnez Aucune charge utile.

Étapes suivantes

À l'étape suivanteExécutez votre flux de travail , vous allez apprendre à exécuter votre flux de travail.