

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
<a name="sample-dist-map-s3data-process"></a>

En este proyecto de muestra se explica cómo puede utilizar el [*estado Distributed Map*](state-map-distributed.md) 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**. **Distributed S3 copy NOA Data** itera sobre los archivos CSV de un bucket público de Amazon S3 denominado **noaa-gsod-pds** y los copia en un bucket de Amazon S3 en su 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 muestra comprueba primero el contenido del bucket de Amazon S3 con una llamada a la acción de la API [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html). Según el número de [claves](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#AmazonS3-ListObjectsV2-response-MaxKeys) 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 Distributed Map* incluye una función de Lambda denominada **TemperatureFunction** que 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 **Distributed S3 copy NOA Data** muestra todos los objetos del bucket público **noaa-gsod-pds** y copia de forma iterativa los objetos individuales en otro bucket de su cuenta en lotes de 100. Una [Inline Map](state-map-inline.md) 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 ejemplo finalmente pasa a una función de Lambda reductora que realiza una agregación final de los resultados devueltos por la función **TemperatureFunction** y escribe los resultados en una tabla de 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 muestra crea la máquina de estado, los recursos de AWS de apoyo, 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)

## Paso 1: Crear la máquina de estado
<a name="sample-dist-map-s3data-create"></a>

1. Abra la [consola de Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) y seleccione **Crear máquina de estado**.

1. Seleccione **Crear a partir de una plantilla** y busque la plantilla de inicio relacionada. Elija **Siguiente** para continuar.

1. Elija cómo usar la plantilla:

   1. **Realizar una demostración**: crea una máquina de estado de solo lectura. Tras la revisión, puede crear el flujo de trabajo y todos los recursos relacionados.

   1. **Crear a partir de ella**: proporciona una definición de flujo de trabajo editable que puede revisar, personalizar e implementar con sus propios recursos. (Los recursos relacionados, como las funciones o las colas, **no** se crearán automáticamente).

1. Elija **Utilizar plantilla** para continuar con la selección.
**nota**  
*Se aplican cargos estándar por los servicios implementados en su cuenta.*

## Paso 2: ejecución de la máquina de estado de demostración
<a name="sample-dist-map-s3data-run"></a>

Si elige la opción **Ejecutar una demostración**, todos los recursos relacionados se implementarán y estarán listos para ejecutarse. Si eligió la opción **Crear a partir de ella**, es posible que necesite establecer valores de marcador de posición y crear recursos adicionales antes de poder ejecutar su flujo de trabajo personalizado.

1. Elija **Implementar y ejecutar**.

1. Espera a que se implemente la pila de CloudFormation. Este proceso puede tardar hasta 10 minutos en completarse.

1. Cuando aparezca la opción **Iniciar ejecución**, revise la **entrada** y elija **Iniciar ejecución**.

**¡Enhorabuena\$1**  
Ahora debería tener una demostración en funcionamiento de su máquina de estado. Puede elegir estados en la **vista gráfica** para revisar la entrada, la salida, las variables, la definición y los eventos.