Implemente y gestione un lago de datos sin servidor en la AWS nube mediante el uso de la infraestructura como código - Recomendaciones de AWS

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.

Implemente y gestione un lago de datos sin servidor en la AWS nube mediante el uso de la infraestructura como código

Creado por Kirankumar Chandrashekar () y Abdel Jaidi () AWS AWS

Entorno: producción

Tecnologías: analítica; sin servidor; DataLakes DevOps

Carga de trabajo: todas las demás cargas de trabajo

AWSservicios: Amazon S3; Amazon; AWS Glue SQS AWS CloudFormation; Amazon; AWS Lambda CloudWatch; AWS Step Functions; Amazon DynamoDB

Resumen

Este patrón describe cómo utilizar la informática y la infraestructura sin servidor como código (IaC) para implementar y administrar un lago de datos en la nube de Amazon Web Services (AWS). Este patrón se basa en el taller sobre el marco de un lago de datos sin servidor (SDLF) desarrollado por. AWS

SDLFes un conjunto de recursos reutilizables que aceleran la entrega de lagos de datos empresariales en la AWS nube y ayudan a agilizar su despliegue en la producción. Se utiliza para implementar la estructura fundamental de un lago de datos siguiendo las prácticas recomendadas.

SDLFimplementa un proceso de integración o despliegue continuo (CI/CD) durante todo el despliegue del código y la infraestructura mediante el uso de AWS servicios como AWS CodePipeline AWS CodeBuild, y. AWS CodeCommit

Este patrón utiliza varios servicios AWS sin servidor para simplificar la administración de los lagos de datos. Entre ellas se incluyen Amazon Simple Storage Service (Amazon S3) y Amazon DynamoDB para el almacenamiento, AWS Lambda y AWS Glue para la informática, y Amazon Events, Amazon Simple Queue Service ( CloudWatch AmazonSQS) y Step Functions para la orquestación. AWS

AWS CloudFormation y los servicios AWS de código actúan como capa IaC para proporcionar despliegues rápidos y reproducibles con operaciones y administración sencillas.

Requisitos previos y limitaciones

Requisitos previos 

Arquitectura

El diagrama de arquitectura ilustra un proceso basado en eventos con los siguientes pasos. 

Implementación y administración de un lago de datos en la AWS nube.
  1. Después de añadir un archivo al depósito de datos sin procesar de S3, se coloca una notificación de evento de Amazon S3 en una SQS cola. Cada notificación se entrega como un JSON archivo que contiene metadatos como el nombre del bucket de S3, la clave del objeto o la marca de tiempo.

  2. Esta notificación la consume una función Lambda que enruta el evento al proceso de extracción, transformación y carga (ETL) correcto en función de los metadatos. La función de Lambda también puede usar configuraciones contextuales almacenadas en una tabla de Amazon DynamoDB. Este paso permite desacoplar y escalar múltiples aplicaciones en el lago de datos.

  3. El evento se enruta a la primera función Lambda ETL del proceso, que transforma y mueve los datos del área de datos sin procesar al área de ensayo del lago de datos. El primer paso es actualizar el catálogo completo. Se trata de una tabla de DynamoDB que contiene todos los metadatos de archivos del lago de datos. Cada fila de esta tabla contiene metadatos operativos sobre un único objeto almacenado en Amazon S3. Se realiza una llamada sincrónica a una función de Lambda que realiza una ligera transformación, que es una operación económica desde el punto de vista computacional (como convertir un archivo de un formato a otro), en el objeto S3. Como se ha agregado un objeto nuevo al depósito provisional de S3, se actualiza el catálogo completo y se envía un mensaje a la SQS cola en espera de la siguiente fase del depósito. ETL

  4. Una regla de CloudWatch eventos activa una función Lambda cada 5 minutos. Esta función comprueba si los mensajes de la fase anterior ETL se entregaron a la SQS cola. Si se ha entregado un mensaje, la función Lambda inicia la segunda función desde AWSStep Functions en el ETL proceso.

  5. A continuación, se aplica una transformación profunda a un lote de archivos. Esta gran transformación es una operación costosa desde el punto de vista computacional, como una llamada sincrónica a un trabajo de AWS Glue, una tarea de AWS Fargate, un EMR paso de Amazon o un cuaderno de Amazon. SageMaker Los metadatos de las tablas se extraen de los archivos de salida mediante un rastreador de AWS Glue, que actualiza el catálogo de AWS Glue. Los metadatos de los archivos también se añaden a la tabla de catálogo completa de DynamoDB. Por último, también se ejecuta un paso de calidad de datos aprovechando Deequ.

Pila de tecnología

  • CloudWatch Eventos de Amazon

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon DynamoDB

  • AWS Glue

  • AWSLambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

Herramientas

  • Amazon CloudWatch Events: CloudWatch Events ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en AWS los recursos.

  • AWS CloudFormation— CloudFormation ayuda a crear y aprovisionar despliegues de AWS infraestructura de forma predecible y repetitiva.

  • AWS CodeBuild— CodeBuild es un servicio de compilación totalmente gestionado que compila el código fuente, ejecuta pruebas unitarias y produce artefactos listos para su despliegue.

  • AWS CodeCommit— CodeCommit es un servicio de control de versiones alojado en AWS él que puede utilizar para almacenar y gestionar activos de forma privada (como el código fuente y los archivos binarios).

  • AWS CodePipeline— CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para publicar los cambios de software de forma continua.

  • Amazon DynamoDB: DynamoDB es un servicio sin base de datos totalmente SQL administrado que proporciona un rendimiento rápido y predecible con escalabilidad. 

  • AWSGlue: AWS Glue es un ETL servicio totalmente gestionado que facilita la preparación y la carga de datos para su análisis.

  • AWSLambda: Lambda admite la ejecución de código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. 

  • Amazon S3: Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos altamente escalable. Amazon S3 se puede utilizar para una amplia gama de soluciones de almacenamiento, incluyendo sitios web, aplicaciones móviles, copias de seguridad y lagos de datos.

  • AWSStep Functions: AWS Step Functions es un orquestador de funciones sin servidor que facilita la secuenciación de funciones AWS Lambda y múltiples AWS servicios en aplicaciones críticas para la empresa.

  • Amazon SQS: Amazon Simple Queue Service (AmazonSQS) es un servicio de cola de mensajes totalmente gestionado que le ayuda a desacoplar y escalar microservicios, sistemas distribuidos y aplicaciones sin servidor.

  • Deequ: Deequ es una herramienta que le ayuda a calcular las métricas de calidad de los datos para conjuntos de datos de gran tamaño, a definir y verificar las limitaciones de calidad de los datos y a mantenerse informado sobre los cambios en la distribución de los datos.

Repositorio de código

El código fuente y los recursos SDLF están disponibles en el repositorio de Labs. AWS GitHub

Epics

TareaDescripciónHabilidades requeridas

Configure la canalización de CI/CD para administrar la IaC para el lago de datos.

Inicie sesión en la consola AWS de administración y siga los pasos de la sección de configuración inicial del SDLF taller. Esto crea los recursos de CI/CD iniciales, como los CodeCommit repositorios, los CodeBuild entornos y las CodePipeline canalizaciones que aprovisionan y administran la IaC para el lago de datos.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Clona el CodeCommit repositorio en tu máquina local.

Siga los pasos de la sección Implementación de las bases del SDLF taller. Esto le ayuda a clonar el repositorio de Git que aloja la IaC en su entorno local. 

Para obtener más información, consulte Conectarse a CodeCommit repositorios en la CodeCommit documentación.

DevOps ingeniero

Modifique las CloudFormation plantillas.

Utilice su estación de trabajo local y un editor de código para modificar las CloudFormation plantillas según sus casos de uso o requisitos. Configúrelos en el repositorio de Git clonado localmente. 

Para obtener más información, consulte Trabajar con AWS CloudFormation plantillas en la AWS CloudFormation documentación.

DevOps ingeniero

Envía los cambios al CodeCommit repositorio.

Su código de infraestructura está ahora bajo control de versiones y se realiza un seguimiento de las modificaciones de su base de código. Cuando introduce un cambio en el CodeCommit repositorio, lo aplica CodePipeline automáticamente a su infraestructura y lo envía allí CodeBuild. 

Importante: Si usa los comandos AWS SAM CLI in CodeBuild, ejecute los sam deploy comandos sam package y. Si los usa AWSCLI, ejecute los aws cloudformation deploy comandos aws cloudformation package y.

DevOps ingeniero

Recursos relacionados

Configurar la canalización de CI/CD para aprovisionar la IaC

Control de versiones de la IaC

Otros recursos