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.
Copie de données CSV à 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 enfant, ce qui permet une simultanéité élevée. Pour plus d'informations sur le mode distribué, voir État de la carte en mode distribué.
Dans ce didacticiel, vous allez utiliser l'état Distributed Map pour parcourir un fichier CSV dans un compartiment Amazon S3. Vous renvoyez ensuite son contenu, ainsi que l'ARN de l'exécution d'un flux de travail enfant, dans un autre compartiment Amazon S3. Vous commencez par créer un prototype de flux de travail dans Workflow Studio. Ensuite, vous définissez le mode de traitement de Map l'état sur Distribué, vous spécifiez le fichier CSV 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 Distributed Map commence par Express.
Outre ces paramètres, vous pouvez également spécifier d'autres configurations, telles que le nombre maximum d'exécutions simultanées de flux de travail enfants et l'emplacement d'exportation du Map résultat, pour l'exemple de flux de travail utilisé dans ce didacticiel.
Conditions préalables
Téléchargez un fichier CSV dans un compartiment Amazon S3. Vous devez définir une ligne d'en-tête dans votre fichier CSV. Pour plus d'informations sur les limites de taille imposées au fichier CSV et sur la manière de spécifier la ligne d'en-tête, consultezFichier CSV dans un compartiment Amazon S3.
Créez un autre compartiment Amazon S3 et un dossier à l'intérieur de ce compartiment pour exporter le résultat de
Mapl'état.
Exigences relatives au compte et à la région
Vos compartiments Amazon S3 doivent se trouver dans les mêmes Compte AWS compartiments Région AWS que votre machine d'état.
Notez que même si votre machine d'état peut accéder à des fichiers dans des compartiments différents Comptes AWS qui se trouvent dans le même compartiment Région AWS, Step Functions ne prend en charge que la liste des objets dans des compartiments Amazon S3 qui se trouvent à la fois dans les mêmes compartiments Compte AWS et dans les mêmes compartiments Région AWS que la machine à états.
É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'action d'API requis dans les onglets Flux et Actions respectivement. Vous utiliserez la fonction glisser-déposer de Workflow Studio pour créer le prototype du flux de travail.
Ouvrez la console Step Functions
, choisissez State machines dans le menu, puis choisissez Create state machine. Choisissez Créer à partir du vide.
-
Donnez un nom à votre machine à états, puis choisissez Continuer pour modifier votre machine à états dans Workflow Studio.
Dans l'onglet Flux, faites glisser un état de la carte et déposez-le vers l'état vide intitulé Faire glisser le premier état ici.
Dans l'onglet Configuration, dans le champ Nom de l'État, saisissez
Process data.Dans l'onglet Actions, faites glisser une action AWS Lambda Invoke API et déposez-la dans l'état Process data.
-
Renommez l'état AWS Lambda Invoke en.
Process 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 le jeu de données et son emplacement à partir duquel l'
MapÉtat peut lire les entrées.ItemProcessor— Spécifie les valeurs suivantes :
ProcessorConfig— Réglez leModeetExecutionTypesurDISTRIBUTEDetEXPRESSrespectivement. Cela définit le mode de traitement deMapl'état et le type de flux de travail pour les exécutions de flux de travail enfants que l'état Distributed Map démarre.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 emplacement Région AWS que votre machine d'état. Dans le cas contraire, l'exécution de votre machine d'état échouera avec l'
States.ResultWriterFailederreur.
Pour configurer les champs obligatoires :
Choisissez l'état des données du processus et, dans l'onglet Configuration, procédez comme suit :
Pour le mode Traitement, choisissez Distribué.
Pour Source de l'article, choisissez Amazon S3, puis choisissez Fichier CSV dans S3 dans la liste déroulante Source de l'article S3.
Procédez comme suit pour spécifier l'emplacement Amazon S3 de votre fichier CSV :
Pour l'objet S3, sélectionnez Enter bucket and key dans la liste déroulante.
Pour Bucket, entrez le nom du bucket Amazon S3, qui contient le fichier CSV. Par exemple,
amzn-s3-demo-source-bucket.Dans Key, entrez le nom de l'objet Amazon S3 dans lequel vous avez enregistré le fichier CSV. Vous devez également spécifier le nom du fichier CSV dans ce champ. Par exemple,
csvDataset/ratings.csv.
Pour les fichiers CSV, vous devez également spécifier l'emplacement de l'en-tête de colonne. Pour ce faire, choisissez Configuration supplémentaire, puis, pour Emplacement de l'en-tête CSV, conservez la sélection par défaut Première ligne si la première ligne de votre fichier CSV 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.Pour Type d'exécution Child, choisissez Express.
Dans Exporter l'emplacement, 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.
Procédez comme suit :
Pour le compartiment S3, choisissez Entrez le nom et le préfixe du compartiment dans la liste déroulante.
Pour Bucket, entrez le nom du bucket Amazon S3 vers lequel vous souhaitez exporter les résultats. Par exemple,
mapOutputs.Dans le champ Préfixe, entrez le nom du dossier dans lequel vous souhaitez enregistrer les résultats. Par exemple,
resultData.
Étape 3 : Configuration d'options supplémentaires
Outre les paramètres requis pour l'état d'une carte distribuée, vous pouvez également spécifier d'autres options. Il peut s'agir du nombre maximum d'exécutions simultanées de flux de travail enfants et de l'emplacement vers lequel exporter le résultat de Map l'état.
Choisissez l'état des données du processus. Ensuite, dans Source de l'élément, choisissez Configuration supplémentaire.
Procédez comme suit :
Choisissez Modifier les éléments avec ItemSelector pour spécifier une entrée JSON personnalisée pour chaque exécution de flux de travail enfant.
Entrez l'entrée JSON suivante :
{"index.$":"$$.Map.Item.Index","value.$":"$$.Map.Item.Value"}Pour plus d'informations sur la création d'une entrée personnalisée, consultez
ItemSelector (Carte).
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 Distributed Map peut démarrer. Par exemple, saisissez
100.-
Ouvrez une nouvelle fenêtre ou un nouvel onglet dans 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 inférieure à Région AWS celle de votre machine à états.
-
Ouvrez la console Lambda
et choisissez Créer une fonction. -
Sur la page Create function, sélectionnez Author from scratch.
-
Dans la section Informations de base, configurez votre fonction Lambda :
-
Sous Nom de la fonction, saisissez
distributedMapLambda. -
Dans Runtime (Exécution), choisissez Node.js.
-
Conservez toutes les sélections par défaut et choisissez Créer une fonction.
-
Après avoir créé votre fonction Lambda, copiez le nom de ressource Amazon (ARN) de la fonction affiché. Vous devrez le fournir dans votre prototype de flux de travail. Voici un exemple d'ARN :
arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
-
-
Copiez le code suivant pour la fonction Lambda et collez-le dans la section Code source de la MapLambda page distribuée.
exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } }; -
Choisissez 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 l'ARN de la fonction Lambda.
Retournez à l'onglet ou à la fenêtre dans lequel vous avez créé le prototype de flux de travail.
Choisissez l'étape Traiter les données CSV et, dans l'onglet Configuration, procédez comme suit :
Pour Type d'intégration, choisissez Optimisé.
Dans le champ 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 Entrer le nom de la fonction et indiquez l'ARN de la fonction Lambda.
Étape 6 : Consultez la définition de langue Amazon States générée automatiquement et enregistrez le flux de travail
Lorsque vous glissez et déposez des états depuis les onglets Action et Flow sur le canevas, Workflow Studio compose automatiquement la définition Amazon States Language de votre flux de travail en temps réel. Vous pouvez modifier cette définition selon vos besoins.
-
(Facultatif) Choisissez Définition dans le Panneau d'inspection panneau et affichez la définition de la machine à états.
Astuce
Vous pouvez également consulter la définition ASL dans Workflow Studio. Éditeur de code Dans l'éditeur de code, vous pouvez également modifier la définition ASL de votre flux de travail.
L'exemple de code suivant montre la définition d'Amazon States Language 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:account-id: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" } } } } -
Spécifiez un nom pour votre machine d'état. Pour ce faire, choisissez l'icône d'édition à côté du nom de la machine d'état par défaut de MyStateMachine. Ensuite, dans Configuration de la machine d'état, spécifiez un nom dans la zone Nom de la machine d'état.
Pour ce didacticiel, saisissez le nom
DistributedMapDemo. -
(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 State Machine Configuration.
-
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 d'état.
Note
Si vous supprimez le rôle IAM 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 paramètres principaux de la politique IAM), 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 d'état sur laquelle vous exécutez votre flux de travail pour effectuer des tâches.
-
Sur la DistributedMapDemo page, choisissez Démarrer l'exécution.
-
Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :
-
(Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
Non-ASCII noms et journalisation
Step Functions accepte les noms des machines à états, des exécutions, des activités et des étiquettes contenant des caractères non ASCII. Comme ces caractères empêcheront Amazon CloudWatch d'enregistrer des données, nous vous recommandons d'utiliser uniquement des caractères ASCII afin de pouvoir suivre les métriques de Step Functions.
-
(Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée au format JSON pour exécuter votre flux de travail.
-
Choisissez Start execution (Démarrer l'exécution).
-
La console Step Functions vous dirige vers une page intitulée avec votre ID d'exécution, connue sous le nom de page Détails de l'exécution. Vous pouvez consulter les résultats de l'exécution au fur et à mesure de l'avancement du flux de travail et une fois celui-ci terminé.
Pour consulter les résultats de l'exécution, choisissez des états individuels dans la vue graphique, puis choisissez les onglets individuels dans le Détails de l'étape volet pour afficher les détails de chaque état, notamment l'entrée, la sortie 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, consultezVue 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 de l'état de la carte distribuée et des exécutions de flux de travail enfants qu'il a démarrées. Pour plus d'informations sur cette page, consultezAffichage des séries de cartes. -