Traitez les données dans un compartiment Amazon S3 avec Distributed Map - 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.

Traitez les données dans un compartiment Amazon S3 avec Distributed Map

Cet exemple de projet montre comment utiliser l'état de la carte distribuée pour traiter des données à grande échelle, par exemple, analyser les données météorologiques historiques et identifier la station météo qui affiche la température moyenne la plus élevée de la planète chaque mois. Les données météorologiques sont enregistrées dans plus de 12 000 fichiers CSV, qui sont à leur tour stockés dans un compartiment Amazon S3.

Cet exemple de projet inclut deux états de carte distribuée nommés Distributed S3 copy NOA Data et ProcessNoaData. Copie S3 distribuée NOA Data itère sur les fichiers CSV d'un compartiment public Amazon S3 nommé noaa-gsod-pdset les copie dans un compartiment Amazon S3 de votre. Compte AWS ProcessNoaaData effectue une itération sur les fichiers copiés et inclut une fonction Lambda qui effectue l'analyse de température.

L'exemple de projet vérifie d'abord le contenu du compartiment Amazon S3 en appelant l'action d'API ListObjectsV2. Sur la base du nombre de clés renvoyées en réponse à cet appel, l'exemple de projet prend l'une des décisions suivantes :

  • Si le nombre de clés est supérieur ou égal à 1, le projet passe à l'état ProcessNoaaData. Cet état de carte distribuée inclut une Lambda fonction nommée TemperatureFunctionqui recherche la station météo ayant enregistré la température moyenne la plus élevée chaque mois. Cette fonction renvoie un dictionnaire avec year-month comme clé et un dictionnaire contenant des informations sur la station météo comme valeur.

  • Si le nombre de clés renvoyées ne dépasse pas 1, l'état des données NOA de copie S3 distribuée répertorie tous les objets du compartiment public noaa-gsod-pdset copie de manière itérative les objets individuels dans un autre compartiment de votre compte par lots de 100. Une carte intégrée effectue la copie itérative des objets.

    Une fois tous les objets copiés, le projet passe à l'état ProcessNoaaData pour le traitement des données météorologiques.

L'exemple de projet passe enfin à une Lambda fonction réductrice qui effectue une agrégation finale des résultats renvoyés par la TemperatureFunctionfonction et écrit les résultats dans un Amazon DynamoDB tableau.

Avec Distributed Map, vous pouvez exécuter jusqu'à 10 000 exécutions parallèles de flux de travail enfants à la fois. Dans cet exemple de projet, la simultanéité maximale de ProcessNoaaData Distributed Map est fixée à 3 000, ce qui la limite à 3 000 exécutions parallèles de flux de travail enfants.

Cet exemple de projet crée la machine d'état, les AWS ressources de support et configure les autorisations IAM associées. Explorez cet exemple de projet pour en savoir plus sur l'utilisation de la carte distribuée pour orchestrer des charges de travail parallèles à grande échelle, ou utilisez-la comme point de départ pour vos propres projets.

Important

Cet exemple de projet n'est disponible que dans la région de l'est des États-Unis (Virginie du Nord).

AWS CloudFormation modèle et ressources supplémentaires

Vous utilisez un CloudFormation modèle pour déployer cet exemple de projet. Ce modèle crée les ressources suivantes dans votre Compte AWS :

  • Une machine à états Step Functions.

  • Rôle d'exécution pour la machine à états. Ce rôle accorde les autorisations dont votre machine d'état a besoin pour accéder à d'autres AWS services ressources telles que l'action Invoke de la fonction Lambda.

  • Un compartiment Amazon S3 nomméNOAADataBucket. Ce bucket contient les fichiers CSV contenant les données météorologiques.

  • Fonction Lambda nommée ReducerFunction qui effectue une agrégation finale des données météorologiques et écrit les résultats dans une table Amazon DynamoDB.

  • Rôle d'exécution de la fonction Lambda du réducteur. Ce rôle accorde à la fonction l'autorisation d'accéder à d'autres AWS services.

  • Un compartiment de sortie Amazon S3 nommé ResultsBucket pour stocker les résultats de l'analyse météo.

  • Table DynamoDB ResultsDynamoDBTable nommée qui contient les résultats renvoyés par le. ReducerFunction

  • Fonction Lambda nommée TemperatureFunction qui trouve la température moyenne mensuelle la plus élevée.

  • Rôle d'exécution de la fonction Lambda. Ce rôle accorde à la fonction l'autorisation d'accéder à d'autres AWS services.

  • Un groupe de CloudWatch journaux qui stocke les informations relatives à l'historique d'exécution de la machine à états.

Important

Des frais standard s'appliquent pour chaque service.

Étape 1 : créer la machine à états et provisionner les ressources

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

  2. Tapez Distributed Map to process files in S3 dans la zone de recherche, puis choisissez Distributed Map pour traiter les fichiers dans S3 à partir des résultats de recherche renvoyés.

  3. Choisissez Next (Suivant) pour continuer.

  4. Step Functions répertorie les AWS services éléments utilisés dans l'exemple de projet que vous avez sélectionné. Il montre également un graphique de flux de travail pour l'exemple de projet. Déployez ce projet sur votre site Compte AWS ou utilisez-le comme point de départ pour créer vos propres projets. Selon la façon dont vous souhaitez procéder, choisissez Exécuter une démo ou Construire à partir de celle-ci.

    Pour plus d'informations sur les ressources qui seront créées pour cet exemple de projet, consultezAWS CloudFormation modèle et ressources supplémentaires.

    L'image suivante montre le graphique du flux de travail de la carte distribuée pour traiter les fichiers dans un exemple de projet S3 :

    Graphique de flux de travail de la carte distribuée pour traiter les fichiers dans un exemple de projet S3.
  5. Choisissez Utiliser le modèle pour poursuivre votre sélection.

  6. Effectuez l’une des actions suivantes :

    • Si vous avez sélectionné Build on it, Step Functions crée le prototype de flux de travail pour l'exemple de projet que vous avez sélectionné. Step Functions ne déploie pas les ressources répertoriées dans la définition du flux de travail.

      Dans Workflow StudioMode de conception, glissez-déposez les états depuis le Navigateur d'états pour continuer à créer votre prototype de flux de travail. Vous pouvez également passer à un éditeur de code intégré similaire à VS Code pour mettre à jour la définition Amazon States Language (ASL) de votre machine à états dans la console Step Functions. Mode code Pour plus d'informations sur l'utilisation de Workflow Studio pour créer vos machines d'état, consultezUtilisation de Workflow Studio.

      Important

      N'oubliez pas de mettre à jour l'espace réservé Amazon Resource Name (ARN) pour les ressources utilisées dans l'exemple de projet avant d'exécuter votre flux de travail.

    • Si vous avez sélectionné Run a demo, Step Functions crée un exemple de projet en lecture seule qui utilise un AWS CloudFormation modèle pour déployer les AWS ressources répertoriées dans ce modèle sur votre. Compte AWS

      Astuce

      Pour afficher la définition de la machine à états de l'exemple de projet, choisissez Code.

      Lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer l'exemple de projet et créer les ressources.

      La création de ces ressources et des autorisations IAM associées peut prendre jusqu'à 10 minutes. Pendant le déploiement de vos ressources, vous pouvez ouvrir le lien CloudFormation Stack ID pour voir quelles ressources sont mises en service.

      Une fois que toutes les ressources de l'exemple de projet ont été créées, vous pouvez voir le nouvel exemple de projet répertorié sur la page State machines.

      Important

      Des frais standard peuvent s'appliquer pour chaque service utilisé dans le CloudFormation modèle.

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

Une fois que toutes les ressources ont été provisionnées et déployées, vous pouvez exécuter la machine d'état.

  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 les valeurs d'entrée au format JSON pour exécuter votre exemple de projet.

      Si vous avez choisi d'exécuter une démo, vous n'avez pas besoin de fournir d'entrée d'exécution.

      Note

      Si le projet de démonstration que vous avez déployé contient des données d'entrée d'exécution préremplies, utilisez ces entrées pour exécuter la machine à états.

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

    3. (Facultatif) 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.

      Une fois l'exécution terminée, 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.

    4. (Facultatif) Vérifiez les résultats d'exécution exportés vers le compartiment Amazon S3. Ces résultats incluent des données, telles que les entrées et sorties d'exécution, l'ARN et le statut d'exécution. Pour de plus amples informations, veuillez consulter ResultWriter.