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 CSV fichiers, eux-mêmes 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 P rocessNOAAData. Copie S3 distribuée NOA Les données itèrent sur les CSV fichiers d'un compartiment public Amazon S3 nommé noaa-gsod-pdset les copient dans un compartiment Amazon S3 de votre Compte AWS. P rocessNOAAData parcourt 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'APIaction 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'rocessNOAADataétat P. Cet état de carte distribuée inclut un Lambda fonction nommée TemperatureFunctionqui trouve 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 NOAdes données de copie S3 distribuées 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'rocessNOAADataétat P pour le traitement des données météorologiques.

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

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 P rocessNOAAData 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 à états, le support AWS ressources, et configure les IAM autorisations associées. Explorez cet exemple de projet pour découvrir comment utiliser 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 Services AWS et des ressources telles que l'action Invoke de la fonction Lambda.

  • Un compartiment Amazon S3 nomméNOAADataBucket. Ce bucket contient les CSV fichiers 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 Services AWS.

  • Un compartiment de sortie Amazon S3 pour stocker les résultats des analyses météorologiques.

  • 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 Services AWS.

  • 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. Choisissez Exécuter une démo pour créer un ready-to-deploy flux 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.

    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.

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

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 JSON format 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écutionARN, et le statut d'exécution. Pour de plus amples informations, veuillez consulter ResultWriter (Carte).