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 porReducerFunction
. -
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
Abra la consola de Step Functions
y seleccione Crear máquina de estado. -
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. -
Elija Siguiente para continuar.
-
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:
-
Elija Utilizar plantilla para continuar con la selección.
Los siguientes pasos dependen de la elección anterior:
-
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.
-
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.
-
En la página Máquina de estado, elija su proyecto de muestra.
-
En la página del proyecto de muestra, seleccione Iniciar ejecución.
-
En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:
-
(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.
-
Seleccione Iniciar ejecución.
-
(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.
-
Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Descripción general de los detalles de ejecución.
-
Para obtener más información sobre cómo ver la ejecución de un estado Distributed Map en la consola, consulte Visualización de las ejecuciones del mapa.
-
-
(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).
-