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
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
Una cuenta de AWS activa.
AWSInterfaz de línea de comandos (AWSCLI), instalada y configurada.
Un cliente Git, instalado y configurado.
El SDLFtaller
, abierto en una ventana del navegador web y listo para usar.
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.](images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)
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.
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.
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
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.
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
Tarea | Descripción | Habilidades 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 | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clona el CodeCommit repositorio en tu máquina local. | Siga los pasos de la sección Implementación de las bases 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 | DevOps ingeniero |
Recursos relacionados
Configurar la canalización de CI/CD para aprovisionar la IaC
Control de versiones de la IaC
Otros recursos