Procesar datos de un bucket de Amazon S3 con Distributed Map - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Procesar datos de un bucket de Amazon S3 con Distributed Map

En este proyecto de muestra se explica cómo puede utilizar el estado Distributed Map para procesar datos a gran escala, por ejemplo, analizar datos meteorológicos históricos e identificar la estación meteorológica que tiene la temperatura media más elevada del planeta cada mes. Los datos meteorológicos se registran en más de 12 000 archivos CSV, que a su vez se almacenan en un bucket de Amazon S3.

Este proyecto de muestra incluye dos estados Distributed Map denominados Distributed S3 copy NOA Data y ProcessNOAAdata. Los datos NOA de copia distribuida de S3 recorren los archivos CSV de un bucket público de Amazon S3 denominado noaa-gsod-pdsy los copian en un bucket de Amazon S3 del suyo. Cuenta de AWS ProcessNOAAData itera sobre los archivos copiados e incluye una función de Lambda que realiza el análisis de la temperatura.

El proyecto de ejemplo comprueba primero el contenido del bucket de Amazon S3 con una llamada a la acción de la API ListObjectsV2. Según el número de claves devueltas en respuesta a esta llamada, el proyecto de muestra toma una de las siguientes decisiones:

  • Si el recuento de claves es mayor o igual a 1, el proyecto pasa al estado ProcessNOAAData. Este estado del mapa distribuido incluye una Lambda función denominada TemperatureFunctionque busca la estación meteorológica que tuvo la temperatura media más alta cada mes. Esta función devuelve un diccionario con year-month como clave y un diccionario que contiene información sobre la estación meteorológica como valor.

  • Si el recuento de claves devuelto no supera 1, el estado de datos NOA de la copia distribuida de S3 muestra todos los objetos del depósito público noaa-gsod-pdsy copia de forma iterativa los objetos individuales en otro depósito de su cuenta en lotes de 100. Una Inline Map realiza la copia iterativa de los objetos.

    Una vez copiados todos los objetos, el proyecto pasa al estado ProcessNOAAData para procesar los datos meteorológicos.

El proyecto de muestra finalmente pasa a una Lambda función reductora que realiza una agregación final de los resultados devueltos por la TemperatureFunctionfunción y los escribe en una tabla. Amazon DynamoDB

Con Distributed Map, puede ejecutar hasta 10 000 ejecuciones paralelas de flujos de trabajo secundarios a la vez. En este proyecto de muestra, la simultaneidad máxima de ProcessNOAAData de Distributed Map se establece en 3000, lo que la limita a 3000 ejecuciones de flujos de trabajo secundarios paralelos.

Este proyecto de ejemplo crea la máquina de estados, los AWS recursos auxiliares y configura los permisos de IAM relacionados. Explore este proyecto de muestra para aprender acerca del uso de Distributed Map para orquestar cargas de trabajo paralelas a gran escala o úselo como punto de partida para sus propios proyectos.

importante

Este proyecto de muestra solo está disponible en la región Este de EE. UU. (Norte de Virginia)

AWS CloudFormation plantilla y recursos adicionales

Utiliza una CloudFormation plantilla para implementar este proyecto de ejemplo. Esta plantilla crea los siguientes recursos en su Cuenta de AWS:

  • Una máquina de estado de Step Functions.

  • Rol de ejecución para la máquina de estado. Esta función otorga los permisos que su máquina de estado necesita para acceder a otros Servicios de AWS recursos, como la acción Invoke de la función Lambda.

  • Un bucket de Amazon S3 denominado NOAADataBucket. Este bucket contiene los archivos CSV con datos meteorológicos.

  • Una función de Lambda denominada ReducerFunction que realiza una agregación final de los datos meteorológicos y escribe los resultados en una tabla de Amazon DynamoDB.

  • Rol de ejecución para la función de Lambda reductora. Este rol otorga a la función permiso para acceder a otros. Servicios de AWS

  • Un bucket de salida de Amazon S3 denominado ResultsBucket para almacenar los resultados del análisis meteorológico.

  • Una tabla de DynamoDB denominada ResultsDynamoDBTable que contiene los resultados devueltos por ReducerFunction.

  • Una función de Lambda denominada TemperatureFunction que encuentra la temperatura media mensual más elevada.

  • Rol de ejecución para la función de Lambda. Este rol otorga a la función permiso para acceder a otros Servicios de AWS.

  • Un grupo de CloudWatch registros que almacena información relacionada con el historial de ejecución de la máquina de estados.

importante

Se aplican cargos estándar por cada servicio.

Paso 1: Crear la máquina de estado y aprovisionar recursos

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. Escriba Distributed Map to process files in S3 en el cuadro de búsqueda y, a continuación, seleccione Asignación distribuida para procesar archivos en S3 en los resultados de búsqueda que aparecen.

  3. Elija Siguiente para continuar.

  4. Step Functions muestra una lista de las Servicios de AWS utilizadas en el proyecto de muestra que ha seleccionado. También muestra un gráfico del flujo de trabajo para el proyecto de muestra. Implemente este proyecto en su empresa Cuenta de AWS o utilícelo como punto de partida para crear sus propios proyectos. En función de cómo desee continuar, elija Ejecutar una demostración o Crear a partir de ella.

    Para obtener información sobre los recursos que se crearán para este proyecto de muestra, consulte AWS CloudFormation plantilla y recursos adicionales.

    En la siguiente imagen se ilustra el gráfico del flujo de trabajo del proyecto de muestra Asignación distribuida para procesar archivos en S3:

    Gráfico del flujo de trabajo del proyecto de muestra Asignación distribuida para procesar archivos en S3.
  5. Elija Utilizar plantilla para continuar con la selección.

  6. Realice una de las acciones siguientes:

    • Si se ha seleccionado Crear a partir de ella, Step Functions crea el prototipo de flujo de trabajo para el proyecto de muestra que ha seleccionado. Step Functions no implementa los recursos que se enumeran en la definición del flujo de trabajo.

      En Modo Diseño de Workflow Studio, arrastre y suelte los estados desde el Navegador de estados para seguir creando su prototipo de flujo de trabajo. Del mismo modo, cambie al Modo Código que proporciona un editor de código integrado similar a VS Code para actualizar la definición (ASL) de Lenguaje de estados de Amazon de su máquina de estado en la consola de Step Functions. Para obtener más información acerca del uso de Workflow Studio para crear máquinas de estados, consulte Usar Workflow Studio.

      importante

      No olvide actualizar el marcador de posición del nombre de recurso de Amazon (ARN) para los recursos que se utilizan en el proyecto de muestra antes de ejecutar el flujo de trabajo.

    • Si seleccionó Ejecutar una demostración, Step Functions crea un proyecto de ejemplo de solo lectura que utiliza una AWS CloudFormation plantilla para implementar los AWS recursos que figuran en esa plantilla en su empresa. Cuenta de AWS

      sugerencia

      Seleccione Código para ver la definición de máquina de estados del proyecto de muestra.

      Cuando esté listo, elija Implementar y ejecutar para implementar el proyecto de muestra y crear los recursos.

      El proceso de creación de estos recursos y los permisos de IAM relacionados puede tardar hasta 10 minutos. Mientras se despliegan sus recursos, puede abrir el enlace CloudFormation Stack ID para ver qué recursos se están aprovisionando.

      Una vez que se creen todos los recursos del proyecto de muestra, podrá ver el nuevo proyecto de muestra en la página Máquinas de estado.

      importante

      Es posible que se apliquen cargos estándar por cada servicio utilizado en la CloudFormation plantilla.

Paso 2: Ejecutar la máquina de estado

Una vez aprovisionados e implementados todos los recursos, puede ejecutar la máquina de estado.

  1. En la página Máquina de estado, elija su proyecto de muestra.

  2. En la página del proyecto de muestra, seleccione Iniciar ejecución.

  3. En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Introduzca los valores de entrada en formato JSON para ejecutar el proyecto de muestra.

      Si se ha seleccionado Ejecutar una demostración, no es necesario proporcionar ninguna entrada de ejecución.

      nota

      Si el proyecto de demostración que implementó contiene datos de entrada de ejecución rellenados previamente, utilice esa entrada para ejecutar la máquina de estado.

    2. Seleccione Iniciar ejecución.

    3. (Opcional) La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

      Una vez que se complete la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente.

    4. (Opcional) Revise los resultados de ejecución exportados al bucket de Amazon S3. Estos resultados incluyen datos, como la entrada y salida de la ejecución, el ARN y el estado de la ejecución. Para obtener más información, consulte ResultWriter.