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

Este proyecto de ejemplo demuestra cómo se puede utilizar el estado del mapa distribuido 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 alta 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 distribuida de S3 recorren los CSV archivos de un bucket público de Amazon S3 denominado noaa-gsod-pdsy los copian en un bucket de Amazon S3 de su 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 un 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 los 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 ser un reductor Lambda función que realiza una agregación final de los resultados devueltos por la TemperatureFunctionfunción y escribe los resultados en un 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, la máquina de apoyo AWS recursos y configura los IAM permisos 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 otras Servicios de AWS y 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 depósito de salida de Amazon S3 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. Elija Ejecutar una demostración para crear un ready-to-deploy flujo de trabajo y de solo lectura, o elija Crear a partir de ella para crear una definición de máquina de estados editable sobre la que pueda crear e implementar posteriormente.

    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.

Los siguientes pasos dependen de la elección anterior:

  1. Realice una demostración: puede revisar la máquina de estados antes de crear un proyecto de solo lectura con los recursos desplegados por AWS CloudFormation a tu Cuenta de AWS.

    Puede ver la definición de la máquina de estados y, cuando esté listo, elija Implementar y ejecutar para implementar el proyecto y crear los recursos.

    La creación de recursos y permisos puede tardar hasta 10 minutos en implementarse. Puede utilizar el enlace Stack ID para supervisar el progreso en AWS CloudFormation.

    Una vez completada la implementación, deberías ver tu nueva máquina de estados en la consola.

  2. Aproveche esta información: puede revisar y editar la definición del flujo de trabajo. Es posible que tengas que establecer valores para los marcadores de posición en el proyecto de ejemplo antes de intentar ejecutar tu flujo de trabajo personalizado.

nota

Es posible que se apliquen cargos estándar por los servicios implementados en tu cuenta.

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) Introduce los valores de entrada en el JSON formato para ejecutar tu 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).