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 CSV archivos, que a su vez se almacenan en un bucket de Amazon S3.

Este proyecto de ejemplo incluye dos estados de mapas distribuidos denominados Distributed S3 copy NOA Data y rocessNOAADataP. NOALos datos de copia distribuidos de S3 recorren en iteración los CSV archivos 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. P rocessNOAAData itera sobre los archivos copiados e incluye una función Lambda que realiza el análisis de temperatura.

El proyecto de ejemplo comprueba primero el contenido del bucket de Amazon S3 con una llamada a la API acción 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 rocessNOAAData estado P. 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 NOAdatos de 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 rocessNOAAData estado P 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 Amazon DynamoDB tabla.

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

En este proyecto de ejemplo se crea la máquina de estados, los AWS recursos auxiliares y se configuran los permisos relacionadosIAM. 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 depósito contiene los CSV archivos 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 siguientes acciones siguientes:

    • Si seleccionó Construir a partir de él, Step Functions crea el prototipo de flujo de trabajo, pero no despliega los recursos de la definición del flujo de trabajo, por lo que puede seguir creando su prototipo de flujo de trabajo.

      En Workflow StudioModo Diseño, puedes añadir estados adicionales a tu prototipo de flujo de trabajo. O bien, puede cambiar Modo Código al editor de código integrado para editar la definición Amazon States Language (ASL) de su máquina de estados desde la consola Step Functions.

      importante

      Es posible que tengas que actualizar el marcador de posición Amazon Resource Name (ARN) para los recursos utilizados en el proyecto de ejemplo antes de poder ejecutar tu flujo de trabajo.

    • Si seleccionó Ejecutar una demostración, Step Functions crea un proyecto de solo lectura que utiliza una AWS CloudFormation plantilla para implementar los AWS recursos de esa plantilla en su empresa. Cuenta de AWS Puede ver la definición de la máquina de estados seleccionando el modo Código.

      Elija Implementar y ejecutar para implementar el proyecto y crear los recursos.

      Tenga en cuenta que la implementación puede tardar hasta 10 minutos en crearse IAM los recursos y los permisos. Mientras se despliegan tus recursos, puedes abrir el enlace AWS CloudFormation Stack ID para ver qué recursos se están aprovisionando.

      Una vez creados todos los recursos, deberías ver el proyecto en la página State Machines de la consola.

      importante

      Se pueden aplicar 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 el JSON formato para ejecutar su 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ónARN, y el estado de la ejecución. Para obtener más información, consulte ResultWriter (Mapa).