用 AI 和 Notion 建立自己的 AWS 考試認證指南
Crea tu propia guía de certificación para exámenes de AWS con IA y Notion
AWS Exam Questions AI 將 AWS 認證考試題目的截圖轉化為結構化學習資料,並透過 Notion 整理題目、答案和西班牙語解釋。流程由 Amazon S3 儲存圖片,AWS Lambda 觸發處理,Amazon Textract 擷取文字,再由 Amazon Bedrock 分析內容,最後透過 Notion API 整理資訊。AI 生成的答案仍須核實。
Hay preguntas que uno responde y olvida al cabo de unas horas. Otras, en cambio, se quedan rondando por la cabeza como un acreedor a la puerta de casa, recordándonos que todavía tenemos algo pendiente por aprender.
Quienes hemos preparado una certificación de AWS conocemos bien ese pequeño drama: capturas de pantalla desperdigadas por el escritorio, preguntas guardadas en carpetas con nombres que nadie recuerda y frases subrayadas en colores que, con el tiempo, terminan pareciendo las notas de un detective que abandonó el caso a mitad de la investigación.
Y entonces surge la pregunta inevitable: ¿por qué no construir un lugar donde todas esas preguntas puedan vivir, organizarse y convertirse en una herramienta de estudio?
La idea es sencilla. Guardar una pregunta de certificación debería ser tan fácil como tomar una captura de pantalla. El resto del trabajo —leerla, comprender su estructura, analizar sus opciones y organizarla— puede dejarse en manos de una pequeña cuadrilla de servicios de AWS y un modelo de inteligencia artificial.
Así nació AWS Exam Questions AI, un proyecto que conecta los servicios de AWS con Notion para transformar imágenes de preguntas técnicas en un archivo de estudio estructurado, acompañado de respuestas y explicaciones en español.
Porque estudiar para una certificación ya tiene suficientes dificultades como para añadirle la de administrar un cementerio de capturas de pantalla.
Antes de abrir el caso: prepara tu cuaderno
No hace falta construir una biblioteca desde sus cimientos para empezar a llenarla de conocimiento. Puedes utilizar cualquier página de Notion que tengas a mano o, si prefieres comenzar con algo preparado, descargar la plantilla que he creado para organizar preguntas de certificaciones de AWS.
Tu siguiente paso comienza aquí:
Descargar la plantilla de AWS Certifications Exam en Notion
La intención es que tengas un lugar donde reunir preguntas, conservar sus respuestas, identificar palabras clave con colores y repasar aquellos conceptos que suelen aparecer una y otra vez en los exámenes.
Una palabra resaltada a tiempo puede ahorrarte varios minutos de confusión. Y, en un examen de certificación, unos cuantos minutos bien administrados pueden valer más que una enciclopedia entera.
Los sospechosos habituales: ¿qué servicios de AWS utilizaremos?
Todo buen misterio necesita personajes con funciones claras. En nuestro caso, ninguno lleva gabardina ni fuma junto a una ventana, pero todos cumplen con su cometido.
Amazon S3: el archivo donde comienza todo
Amazon Simple Storage Service, mejor conocido como Amazon S3, será nuestro depósito de imágenes. Aquí guardaremos las capturas de pantalla de las preguntas que queramos estudiar. Cada archivo quedará almacenado en un bucket, esperando el momento en que alguien lo llame a declarar. S3 no necesita comprender lo que contiene la imagen. Su trabajo es más sencillo: conservarla y ponerla a disposición del proceso que viene después. Es, por decirlo de algún modo, el archivista de nuestra investigación.
Amazon Textract: el testigo que sabe leer
Una imagen puede contener una pregunta brillante, pero para una máquina sigue siendo, en principio, un conjunto de píxeles. Aquí entra Amazon Textract, un servicio capaz de detectar y extraer texto de documentos e imágenes. Su misión consiste en recuperar las palabras que aparecen en la captura: el enunciado, las opciones de respuesta y cualquier otro texto relevante.
Textract no decide cuál es la respuesta correcta ni interpreta por sí solo toda la intención de la pregunta. Primero necesitamos obtener el contenido escrito. La interpretación llegará después. Es como interrogar a un testigo que puede repetir exactamente lo que vio, aunque todavía no conozca el significado de lo ocurrido.
AWS Lambda: el detective que aparece cuando lo llaman
AWS Lambda es el encargado de coordinar una parte fundamental del proceso sin necesidad de mantener un servidor funcionando permanentemente para esta tarea. Cuando se carga una imagen en el bucket de S3, un evento puede activar una función Lambda. Esta recibe la notificación, identifica el archivo y pone en marcha el flujo de procesamiento.
No hay que llamar a un operador ni esperar a que alguien abra una terminal. El procedimiento comienza automáticamente cuando ocurre el evento configurado. Lambda es ese detective discreto que aparece cuando el caso lo requiere, hace su trabajo y se retira hasta la próxima llamada.
Amazon Bedrock: el interrogador que encuentra sentido en las palabras
Ya tenemos el texto, pero todavía falta comprenderlo. Amazon Bedrock permite trabajar con modelos de inteligencia artificial generativa para analizar información, interpretar instrucciones y producir respuestas estructuradas.
En nuestro proyecto, el texto extraído por Textract se entrega al modelo junto con un prompt: una serie de instrucciones que le indican cómo debe analizar la pregunta, identificar sus opciones y organizar el resultado. El objetivo es obtener una estructura consistente que incluya el enunciado, las respuestas posibles, la respuesta propuesta y su explicación en español.
Bedrock es el interrogador de nuestro pequeño despacho: reúne las pistas y propone una interpretación de lo sucedido. Conviene recordar algo importante: la inteligencia artificial puede equivocarse. Por eso, las respuestas generadas deben verificarse, especialmente cuando se estudian conceptos técnicos que podrían aparecer en un examen real.
El plano del delito: ¿cómo funciona la arquitectura?
Toda investigación necesita un mapa. De lo contrario, uno termina persiguiendo sospechosos por callejones que no conducen a ninguna parte. La arquitectura de AWS Exam Questions AI sigue una secuencia bastante directa: una imagen entra en S3, un evento activa Lambda, Textract extrae el texto, Bedrock analiza el contenido y, finalmente, la información se organiza en Notion mediante su API.
Arquitectura general
El recorrido puede entenderse en seis etapas:
- Carga de la imagen. El usuario sube una captura de pantalla con una pregunta de certificación a un bucket de Amazon S3.
- Activación del proceso. Un evento de S3 invoca la función AWS Lambda configurada para procesar el archivo.
- Extracción del texto. Lambda utiliza Amazon Textract para obtener el texto contenido en la imagen.
- Análisis con inteligencia artificial. El texto se envía a Amazon Bedrock, donde un modelo generativo recibe las instrucciones necesarias para estructurar la pregunta y analizar sus opciones.
- Construcción del resultado. La información se organiza en un formato JSON que puede contener el enunciado, las opciones, la respuesta propuesta y su explicación.
- Registro en Notion. Mediante la API de Notion y la biblioteca PyToNotion, los datos se convierten en contenido dentro de la página configurada.
El resultado es un proceso automatizado en el que una simple captura puede terminar convertida en una ficha de estudio organizada.
La lógica del proyecto
La arquitectura nos muestra qué servicios participan. El flujo lógico, en cambio, nos permite entender cómo se relacionan. La distinción es importante: una cosa es saber qué personajes aparecen en la historia y otra muy distinta comprender por qué cada uno entra en escena.
En este proyecto, Lambda actúa como punto de coordinación. Textract se ocupa de la lectura, Bedrock de la interpretación y Notion de conservar el resultado en un formato útil para estudiar.
La integración con Notion es el último eslabón de la cadena, pero también uno de los más importantes. Una respuesta que termina perdida en un registro técnico sirve de poco; una respuesta que aparece en el cuaderno donde estudias puede convertirse en conocimiento reutilizable.
Las huellas digitales: políticas y permisos de IAM
Ningún detective sensato entrega las llaves de toda la ciudad a un desconocido. En AWS, esa misma prudencia tiene nombre: AWS Identity and Access Management (IAM).
Los servicios necesitan permisos para interactuar entre sí, pero concederlos sin cuidado puede abrir puertas que no deberían estar abiertas.
Para este proyecto, conviene distinguir los permisos relacionados con el almacenamiento de aquellos que necesita la función Lambda para ejecutar el flujo completo.
Permisos para Amazon S3
Las siguientes acciones pueden ser necesarias según las operaciones que realice el código:
-
s3:GetObject: permite leer los objetos almacenados en el bucket. -
s3:PutObject: permite cargar o escribir objetos. -
s3:ListBucket: permite consultar la lista de objetos del bucket.
No todas las acciones son imprescindibles en cualquier implementación. Si la función únicamente lee las imágenes y nunca escribe archivos ni enumera el contenido del bucket, puedes reducir los permisos en consecuencia.
Permisos para AWS Lambda
La función necesita una política de ejecución que le permita acceder a los servicios involucrados. Entre las acciones relacionadas con el flujo se encuentran:
-
s3:GetObject: leer la imagen que debe procesarse. -
textract:DetectDocumentText: detectar y extraer texto de la imagen. -
textract:AnalyzeDocument: analizar la estructura de documentos cuando esa capacidad sea necesaria. -
bedrock:InvokeModel: invocar un modelo de Amazon Bedrock. -
bedrock:InvokeModelWithResponseStream: utilizar respuestas en streaming si la implementación las requiere. -
bedrock:ListFoundationModels: consultar modelos disponibles, si el código realiza esa operación.
Las acciones de escritura y listado de S3 también pueden ser necesarias si Lambda guarda resultados o enumera objetos.
Una precaución importante: estos permisos no deben copiarse indiscriminadamente en una única política. La función debería recibir únicamente las acciones que utiliza, restringidas a los recursos correspondientes siempre que sea posible.
Además, Lambda necesita sus permisos habituales para escribir registros en Amazon CloudWatch Logs. La invocación desde S3 requiere configurar correctamente los permisos de la política basada en recursos de la función, mientras que las llamadas a Textract y Bedrock dependen del rol de ejecución de Lambda.
En particular, el acceso a Bedrock debe estar habilitado para el modelo elegido y la región utilizada.
En seguridad, la elegancia no consiste en tener todas las llaves, sino en necesitar muy pocas.
El expediente del proyecto: estructura del repositorio
Si deseas examinar el funcionamiento del proyecto con más detalle, el repositorio está organizado en módulos para separar las responsabilidades principales.
AWS-Exam-Qustons-AI-AWS/
├── main.py # Punto de entrada de AWS Lambda
├── aws_question_agent.py # Flujo principal de procesamiento
├── utils/
│ ├── ocr.py # Extracción de texto de imágenes
│ ├── llm.py # Análisis de preguntas con IA
│ └── notion.py # Guardado de resultados en Notion
├── images/
│ ├── vaniadev.png
│ └── video.jpg
├── requirements.txt # Dependencias de Python
├── pyproject.toml # Configuración del proyecto
├── uv.lock # Bloqueo de dependencias
├── .python-version # Versión de Python
├── .gitignore # Archivos excluidos de Git
└── LICENSE.txt # Licencia MIT
La estructura deja entrever una decisión acertada: cada módulo tiene una responsabilidad definida, main.py recibe la ejecución de Lambda; aws_question_agent.py coordina el trabajo; y la carpeta utils reúne las piezas especializadas en lectura, análisis y almacenamiento.
Esta separación facilita mantener el código, detectar errores y modificar una parte del sistema sin convertir cada cambio en una operación a corazón abierto.
¿Cómo desplegarlo en AWS Lambda?
A grandes rasgos, el despliegue contempla los siguientes pasos:
- Preparar el código y sus dependencias para el entorno de ejecución de Lambda.
- Crear la función Lambda y configurar su rol de ejecución.
- Configurar el bucket S3 y el evento que activará la función.
- Configurar el acceso al modelo de Amazon Bedrock y las credenciales o integraciones necesarias para Notion.
- Subir una imagen de prueba y verificar los registros, el procesamiento y la creación del contenido.
Antes de poner el sistema a trabajar con muchas imágenes, conviene probarlo con unas cuantas capturas representativas. Los errores más interesantes suelen esconderse en los detalles: una opción mal leída, una respuesta que no respeta el formato esperado o una propiedad de Notion que no coincide con la estructura enviada.
La reconstrucción de los hechos: del archivo a la respuesta
Para entender mejor el recorrido, imaginemos una pregunta habitual de una certificación de AWS.
Una empresa utiliza clústeres de Amazon EMR para analizar sus cargas de trabajo. El equipo de ciencia de datos los deja funcionando incluso después de terminar sus tareas, lo que provoca gastos innecesarios. La dirección quiere encontrar una solución automatizada para terminar los clústeres inactivos.
La pregunta aparece en una captura de pantalla y comienza nuestro procedimiento.
1. La imagen entra en el archivo
El usuario sube la captura al bucket de S3. El objeto queda almacenado y el evento configurado notifica a Lambda.
Lambda solicita la extracción del texto mediante Textract. El resultado contiene el enunciado y las opciones que aparezcan en la imagen.
La calidad de la captura importa. Una imagen borrosa, una opción cortada o un texto demasiado pequeño pueden producir errores de extracción que después se propagarán al resto del flujo.
3. Bedrock analiza las pistas
El texto recuperado se envía al modelo junto con instrucciones que definen el formato esperado.
Por ejemplo, el prompt puede solicitar una estructura que incluya:
- La pregunta original.
- Las opciones de respuesta.
- La opción considerada correcta.
- Una explicación en español.
- Los conceptos clave que conviene recordar.
La precisión del resultado dependerá tanto de las instrucciones como del modelo, la calidad del texto y la complejidad de la pregunta.
4. El resultado toma forma de JSON
Para que la información pueda trasladarse de manera consistente a Notion, el proyecto utiliza una estructura de datos. JSON permite representar los distintos campos de la pregunta de forma organizada.
Un ejemplo simplificado del resultado que podría generar el análisis sería:
{
"question": "¿Cómo automatizar la terminación de clústeres EMR inactivos?",
"options": [
"Opción A",
"Opción B",
"Opción C",
"Opción D"
],
"correct_answer": "Opción B",
"explanation": "La solución debe identificar los clústeres inactivos y terminarlos de acuerdo con las condiciones definidas."
}
Este fragmento es ilustrativo: las opciones y la respuesta son marcadores de ejemplo, no una resolución verificada de la pregunta original.
La ventaja de utilizar una estructura definida es que el contenido deja de ser un bloque de texto difícil de manipular y se convierte en información que el programa puede validar y transformar.
5. Notion recibe el expediente
Una vez construido el resultado, la integración con Notion utiliza la API para crear los bloques de contenido correspondientes.
La biblioteca PyToNotion forma parte de esta integración. Su función dentro del proyecto es facilitar el trabajo con Notion desde Python; la estructura exacta de los bloques y las propiedades enviadas depende de cómo se implemente la integración.
El resultado puede incluir preguntas numeradas, respuestas y explicaciones, de modo que el usuario tenga una colección lista para repasar.
El último documento: ejemplo de respuesta de la API de Notion
Cuando se crean bloques mediante la API de Notion, la respuesta puede incluir metadatos como el identificador del bloque, su tipo, la página a la que pertenece y las fechas de creación y edición.
El siguiente ejemplo muestra una respuesta representativa con una pregunta almacenada como elemento de lista numerada. Los identificadores y datos personales se han sustituido por valores ilustrativos.
{
"object": "block",
"id": "304e03e4-e8f2-492f-a7c0-3fd7",
"parent": {
"type": "page_id",
"page_id": "2a3e03e9-f057-a765-8"
},
"created_time": "2026-02-11T02:05:00.000Z",
"last_edited_time": "2026-02-11T02:05:00.000Z",
"has_children": true,
"archived": false,
"type": "numbered_list_item",
"numbered_list_item": {
"rich_text": [
{
"type": "text",
"text": {
"content": "¿Cuál es la mejor solución automatizada para terminar clústeres EMR inactivos?"
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
}
}
],
"color": "default"
}
}
La respuesta de la API confirma que Notion ha recibido un bloque y devuelve sus metadatos. Eso no significa que toda la respuesta de la inteligencia artificial sea correcta ni que todos los bloques de la página se hayan creado como esperamos: esas condiciones deben comprobarse en el flujo de la aplicación.
Para conocer los detalles de la estructura admitida por Notion, puedes consultar su documentación oficial de la API.
Las herramientas del oficio: dependencias de Python
Detrás de la arquitectura hay otra pequeña colección de herramientas que permite conectar los servicios y organizar el código.
| Dependencia | Función dentro del proyecto |
|---|---|
boto3 |
Interactuar con los servicios de AWS desde Python. |
langchain-aws |
Integrar componentes de LangChain con servicios de AWS, incluido Bedrock. |
langgraph |
Definir y coordinar flujos de trabajo con componentes de IA. |
PyToNotion |
Facilitar la integración con Notion desde Python. |
langchain-community |
Proporcionar integraciones y utilidades adicionales de LangChain. |
langchain-core |
Ofrecer componentes fundamentales de LangChain. |
pydantic |
Validar y estructurar los datos mediante modelos. |
numpy |
Proporcionar operaciones numéricas cuando sean necesarias. |
No todas las dependencias tienen que intervenir directamente en cada ejecución. Su participación concreta depende de la implementación y de los módulos que las importen.
Si vas a modificar el proyecto, revisa también pyproject.toml y uv.lock para entender cómo se gestionan las dependencias y mantener un entorno reproducible.
Lo que conviene saber antes de cerrar el caso
El proyecto está pensado para trabajar con imágenes PNG y JPG y contempla preguntas de opción múltiple con alternativas como A, B, C y D. Las explicaciones se generan en español y se requiere acceso al modelo de Amazon Bedrock que se vaya a utilizar.
Sin embargo, hay algunos detalles que merece la pena tener presentes:
- Calidad de imagen: una captura legible ayuda a reducir errores de extracción.
- Validación de respuestas: la inteligencia artificial puede confundir servicios, condiciones o alternativas muy parecidas. Contrasta las respuestas con documentación oficial y material de estudio fiable.
- Formato de salida: valida el JSON antes de enviarlo a Notion para evitar que una respuesta mal formada interrumpa el proceso.
- Errores de integración: controla los fallos de permisos, las respuestas de los servicios y los límites de solicitudes.
- Costos: revisa el uso de Lambda, Textract y Bedrock, especialmente si automatizas el procesamiento de muchas imágenes.
- Seguridad: utiliza permisos de IAM de mínimo privilegio y protege los tokens de integración con Notion.
La automatización ahorra trabajo, pero no sustituye el criterio. El propósito no es memorizar respuestas a ciegas, sino construir una herramienta que ayude a comprender los conceptos que hay detrás de cada pregunta.
El archivo queda abierto: repositorio y videos
Si quieres examinar el código, reproducir el proyecto o adaptarlo a tus propias necesidades, aquí tienes el repositorio: AWS Exam Questions AI — GitHub
También he preparado material audiovisual para explicar el funcionamiento con mayor detalle.
Video: explicación del proyecto
En este video encontrarás una explicación más visual del flujo y de cómo se relacionan sus componentes.
Charla: AWS Student Builder Group UNAM
El proyecto también se presentó en una charla para la comunidad de AWS Student Builder Group UNAM, donde se explicó su funcionamiento y hubo espacio para preguntas y respuestas.
Charla en la comunidad de AWS Puebla
Durante el mes de marzo, el proyecto también llegó a la comunidad de AWS Puebla. Fue otra oportunidad para compartir la idea, conversar sobre su funcionamiento y mostrar cómo los servicios de nube pueden resolver problemas cotidianos de aprendizaje.
來源:DEV Community · dev.to



