Copier CSV des données à grande échelle à l'aide de Distributed Map in 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.

Copier CSV des données à grande échelle à l'aide de Distributed Map in Step Functions

Ce didacticiel vous aide à commencer à utiliser l'Mapétat en mode distribué. Un Map état défini sur Distribué est appelé état de carte distribuée. Vous utilisez l'état de la carte distribuée dans vos flux de travail pour itérer sur des sources de données Amazon S3 à grande échelle. L'Mapétat exécute chaque itération en tant qu'exécution d'un flux de travail secondaire, ce qui permet une simultanéité élevée. Pour plus d'informations sur le mode distribué, consultez la section État de la carte en mode distribué.

Dans ce didacticiel, vous allez utiliser l'état de la carte distribuée pour itérer sur un CSV fichier dans un compartiment Amazon S3. Vous renvoyez ensuite son contenu, ainsi que l'exécution ARN d'un flux de travail enfant, dans un autre compartiment Amazon S3. Vous commencez par créer un prototype de flux de travail dans le Workflow Studio. Ensuite, vous définissez le mode de traitement de Map l'état sur Distribué, vous spécifiez le CSV fichier comme ensemble de données et vous indiquez son emplacement à l'Mapétat. Vous spécifiez également le type de flux de travail pour les exécutions de flux de travail enfants dont l'état de carte distribuée commence par Express.

Outre ces paramètres, vous spécifiez également d'autres configurations, telles que le nombre maximum d'exécutions simultanées de flux de travail enfant et l'emplacement d'exportation du Map résultat, pour l'exemple de flux de travail utilisé dans ce didacticiel.

Prérequis

  • Chargez un CSV fichier dans un compartiment Amazon S3. Vous devez définir une ligne d'en-tête dans votre CSV fichier. Pour plus d'informations sur les limites de taille imposées au CSV fichier et sur la manière de spécifier la ligne d'en-tête, consultezCSVfichier dans un compartiment Amazon S3.

  • Créez un autre compartiment Amazon S3 et un dossier dans ce compartiment vers lequel exporter le résultat de Map l'état.

Important

Assurez-vous que vos compartiments Amazon S3 se trouvent sous le même Compte AWS and Région AWS en tant que machine d'État.

Étape 1 : Création du prototype de flux de travail

Au cours de cette étape, vous allez créer le prototype de votre flux de travail à l'aide de Workflow Studio. Workflow Studio est un concepteur visuel de flux de travail disponible dans la console Step Functions. Vous choisissez l'état et l'APIaction requis dans les onglets Flux et Actions respectivement. Vous allez utiliser la fonction glisser-déposer de Workflow Studio pour créer le prototype du flux de travail.

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

  2. Dans la boîte de dialogue Choisir un modèle, sélectionnez Vide.

  3. Choisissez Sélectionner pour ouvrir Workflow Studio dansMode de conception.

  4. Dans l'onglet Flux, faites glisser un état de la carte et déposez-le dans l'état vide intitulé Drag first state here.

  5. Dans l'onglet Configuration, saisissez le nom de l'ÉtatProcess data.

  6. Dans l'onglet Actions, faites glisser un AWS Lambda Invoquez une API action et placez-la dans l'état des données du processus.

  7. Renommez le AWS Lambda Invoquez l'état pourProcess CSV data.

Étape 2 : Configuration des champs obligatoires pour l'état de la carte

Au cours de cette étape, vous configurez les champs obligatoires suivants de l'état de la carte distribuée :

  • ItemReader— Spécifie l'ensemble de données et son emplacement à partir duquel l'Mapétat peut lire les entrées.

  • ItemProcessor— Spécifie les valeurs suivantes :

    • ProcessorConfig— Définissez EXPRESS respectivement ExecutionType les Mode DISTRIBUTED et et. Cela définit le mode de traitement de Map l'état et le type de flux de travail pour les exécutions de flux de travail enfants lancées par l'état Distributed Map.

    • StartAt— Le premier état du flux de travail cartographique.

    • States— Définit le flux de travail Map, qui est un ensemble d'étapes à répéter lors de l'exécution de chaque flux de travail enfant.

  • ResultWriter— Spécifie l'emplacement Amazon S3 où Step Functions écrit les résultats de l'état de la carte distribuée.

    Important

    Assurez-vous que le compartiment Amazon S3 que vous utilisez pour exporter les résultats d'un Map Run se trouve sous le même Compte AWS and Région AWS en tant que machine d'État. Sinon, l'exécution de votre machine d'état échouera avec l'States.ResultWriterFailederreur.

Pour configurer les champs obligatoires :
  1. Choisissez l'état des données de processus et, dans l'onglet Configuration, procédez comme suit :

    1. Pour le mode de traitement, choisissez Distribué.

    2. Pour Source de l'article, choisissez Amazon S3, puis choisissez CSVle fichier dans S3 dans la liste déroulante des sources de l'article S3.

    3. Procédez comme suit pour spécifier l'emplacement de votre CSV fichier sur Amazon S3 :

      1. Pour l'objet S3, sélectionnez Enter bucket and key dans la liste déroulante.

      2. Pour Bucket, entrez le nom du compartiment Amazon S3 qui contient le CSV fichier. Par exemple, amzn-s3-demo-source-bucket.

      3. Pour Key, entrez le nom de l'objet Amazon S3 dans lequel vous avez enregistré le CSV fichier. Vous devez également indiquer le nom du CSV fichier dans ce champ. Par exemple, csvDataset/ratings.csv.

    4. Pour CSV les fichiers, vous devez également spécifier l'emplacement de l'en-tête de colonne. Pour ce faire, choisissez Configuration supplémentaire, puis pour l'emplacement de l'CSVen-tête, conservez la sélection par défaut de Première ligne si la première ligne de votre CSV fichier est l'en-tête. Sinon, choisissez Given pour spécifier l'en-tête dans la définition de la machine à états. Pour de plus amples informations, veuillez consulter ReaderConfig.

    5. Pour le type d'exécution Child, choisissez Express.

  2. Dans Emplacement d'exportation, pour exporter les résultats de Map Run vers un emplacement Amazon S3 spécifique, choisissez Exporter la sortie de l'état de la carte vers Amazon S3.

  3. Procédez comme suit :

    1. Pour le compartiment S3, choisissez Enter bucket name and prefix (Enter bucket name and prefix) dans la liste déroulante.

    2. Pour Bucket, entrez le nom du compartiment Amazon S3 vers lequel vous souhaitez exporter les résultats. Par exemple, mapOutputs.

    3. Dans Préfixe, entrez le nom du dossier dans lequel vous souhaitez enregistrer les résultats. Par exemple, resultData.

Étape 3 : Configuration des options supplémentaires

Outre les paramètres requis pour l'état d'une carte distribuée, vous pouvez également définir d'autres options. Il peut s'agir du nombre maximum d'exécutions simultanées d'un flux de travail enfant et de l'emplacement vers lequel exporter le résultat de Map l'état.

  1. Choisissez l'état des données du processus. Ensuite, dans Source de l'article, sélectionnez Configuration supplémentaire.

  2. Procédez comme suit :

    1. Choisissez Modifier les éléments avec ItemSelector pour spécifier une JSON entrée personnalisée pour chaque exécution du flux de travail enfant.

    2. Entrez l'JSONentrée suivante :

      { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" }

      Pour plus d'informations sur la création d'une entrée personnalisée, consultezItemSelector (Carte).

  3. Dans les paramètres d'exécution, pour Limite de simultanéité, spécifiez le nombre d'exécutions simultanées de flux de travail enfants que l'état de carte distribuée peut démarrer. Par exemple, saisissez 100.

  4. Ouvrez une nouvelle fenêtre ou un nouvel onglet sur votre navigateur et terminez la configuration de la fonction Lambda que vous utiliserez dans ce flux de travail, comme expliqué dans. Étape 4 : Configuration de la fonction Lambda

Étape 4 : Configuration de la fonction Lambda

Important

Assurez-vous que votre fonction Lambda est sous la même Région AWS en tant que machine d'État.

  1. Ouvrez la console Lambda et choisissez Create function.

  2. Sur la page Create function, sélectionnez Author from scratch.

  3. Dans la section Informations de base, configurez votre fonction Lambda :

    1. Sous Nom de la fonction, saisissez distributedMapLambda.

    2. Dans le champ Runtime, sélectionnez Node.js.

    3. Conservez toutes les sélections par défaut et choisissez Créer une fonction.

    4. Après avoir créé votre fonction Lambda, copiez le nom de ressource Amazon de la fonction (ARN) affiché dans le coin supérieur droit de la page. Vous devrez le fournir dans votre prototype de flux de travail. Voici un exemple ARN :

      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
  4. Copiez le code suivant pour la fonction Lambda et collez-le dans la section Code source de la distributedMapLambdapage.

    exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } };
  5. Choisissez Deploy (Déployer). Une fois votre fonction déployée, choisissez Test pour voir le résultat de votre fonction Lambda.

Étape 5 : Mettre à jour le prototype du flux de travail

Dans la console Step Functions, vous allez mettre à jour votre flux de travail pour ajouter les fonctions Lambda. ARN

  1. Retournez à l'onglet ou à la fenêtre dans lequel vous avez créé le prototype de flux de travail.

  2. Choisissez l'étape CSVTraiter les données, puis dans l'onglet Configuration, procédez comme suit :

    1. Pour le type d'intégration, choisissez Optimisé.

    2. Pour Nom de la fonction, commencez par saisir le nom de votre fonction Lambda. Choisissez la fonction dans la liste déroulante qui apparaît ou choisissez Enter function name (Entrez le nom de la fonction et indiquez la fonction ARN Lambda).

Étape 6 : Vérifiez la définition du langage Amazon States générée automatiquement et enregistrez le flux de travail

Lorsque vous glissez et déposez les états des onglets Action et Flow sur le canevas, Workflow Studio compose automatiquement la définition du langage Amazon States de votre flux de travail en temps réel. Vous pouvez modifier cette définition selon vos besoins.

  1. (Facultatif) Choisissez Definition dans le Panneau Inspector panneau et visualisez la définition de la machine à états.

    Astuce

    Vous pouvez également consulter la ASL définition dans Workflow Studio. Éditeur de code Dans l'éditeur de code, vous pouvez également modifier la ASL définition de votre flux de travail.

    L'exemple de code suivant montre la définition du langage Amazon States générée automatiquement pour votre flux de travail.

    { "Comment": "Using Map state in Distributed mode", "StartAt": "Process data", "States": { "Process data": { "Type": "Map", "MaxConcurrency": 100, "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-source-bucket", "Key": "csvDataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "Process CSV data", "States": { "Process CSV data": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda" }, "End": true } } }, "Label": "Processdata", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "mapOutputs", "Prefix": "resultData" } }, "ItemSelector": { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" } } } }
  2. Spécifiez un nom pour votre machine à états. Pour ce faire, cliquez sur l'icône d'édition à côté du nom de la machine à états par défaut de MyStateMachine. Ensuite, dans Configuration de la machine d'état, spécifiez un nom dans le champ Nom de la machine d'état.

    Pour ce didacticiel, saisissez le nom DistributedMapDemo.

  3. (Facultatif) Dans Configuration de la machine à états, spécifiez d'autres paramètres de flux de travail, tels que le type de machine à états et son rôle d'exécution.

    Pour ce didacticiel, conservez toutes les sélections par défaut dans la configuration State Machine.

  4. Dans la boîte de dialogue Confirmer la création du rôle, choisissez Confirmer pour continuer.

    Vous pouvez également choisir Afficher les paramètres des rôles pour revenir à la configuration de la machine State.

    Note

    Si vous supprimez le IAM rôle créé par Step Functions, Step Functions ne pourra pas le recréer ultérieurement. De même, si vous modifiez le rôle (par exemple, en supprimant Step Functions des principes de la IAM politique), Step Functions ne pourra pas restaurer ses paramètres d'origine ultérieurement.

Étape 7 : Exécutez la machine d'état

Une exécution est une instance de votre machine à états dans laquelle vous exécutez votre flux de travail pour effectuer des tâches.

  1. Sur la DistributedMapDemopage, choisissez Démarrer l'exécution.

  2. 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 au JSON format permettant d'exécuter votre flux de travail.

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

    4. La console Step Functions vous dirige vers une page intitulée avec votre ID d'exécution. Cette page est connue sous le nom de page Détails de l'exécution. Sur cette page, vous pouvez consulter les résultats de l'exécution au fur et à mesure que l'exécution progresse ou une fois celle-ci terminée.

      Pour consulter les résultats de l'exécution, choisissez des états individuels dans la vue graphique, puis choisissez les onglets individuels du Détails de l'étape volet pour afficher les détails de chaque état, y compris les entrées, les sorties et la définition respectivement. Pour plus de détails sur les informations d'exécution que vous pouvez consulter sur la page Détails de l'exécution, voirVue d'ensemble des détails d'exécution.

    Par exemple, choisissez l'Mapétat, puis choisissez Map Run pour ouvrir la page Map Run Details. Sur cette page, vous pouvez consulter tous les détails d'exécution relatifs à l'état de la carte distribuée et aux exécutions du flux de travail enfant qu'elle a lancées. Pour plus d'informations sur cette page, consultezAffichage des séries de cartes.