Laboratorio Cloud: practica con buckets S3, colas SQS y tablas DynamoDB desde la línea de comandos de AWS

Este laboratorio da a cada estudiante su propia nube de práctica: MiniStack, un emulador que responde a las mismas peticiones que tres servicios de Amazon Web Services, S3 para archivos, SQS para colas de mensajes y DynamoDB para tablas. El estudiante usa la línea de comandos de AWS, la misma herramienta que usaría con el servicio real, así que lo que escribe se traslada. Acompaña al módulo de práctica de computación en la nube, cuyas tareas se hacen sobre respuestas capturadas.

No es un laboratorio de ataque y no es AWS. Cada copia no tiene ruta a internet ni a ningún otro estudiante, nada en ella se factura, y no tiene página web, así que todo se escribe en el terminal de al lado. Solo están activados los tres servicios: Lambda está desactivado a propósito, porque sus funciones ejecutarían el código del estudiante dentro de la pila.

Qué aprenden los estudiantes

Cómo se usa un servicio en la nube desde la línea de comandos: un bucket guarda objetos que se encuentran por su clave (aws s3 mb, cp y ls), una cola guarda mensajes que se reciben y luego se borran para terminarlos (aws sqs create-queue, send-message, receive-message y delete-message), y una tabla guarda elementos bajo una clave que una consulta lee juntos (aws dynamodb create-table, put-item, get-item y query). Leen las respuestas, incluido el error de una clave que no existe, NoSuchKey en S3, y conocen una diferencia entre servicios: un elemento de DynamoDB que falta es una respuesta vacía y no un error. También ven qué es un emulador, una copia de práctica que no es el servicio real. Sirve para una introducción a la computación en la nube, o para la parte de almacenamiento y mensajería de un curso de ingeniería del software.

Ejecútalo en tu navegador

El laboratorio arranca un solo servicio, cloud, y espera a que responda. El terminal tiene la línea de comandos de AWS pero ninguna clave para la pila, así que la lección empieza dando una clave inventada, una región y la dirección de la pila, http://cloud:4566. La pila no comprueba ninguna contraseña, y en el AWS real no darías la dirección.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca Cloud (MiniStack).
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, pulsa «Abrir terminal». No hay enlace bajo «En tu navegador» porque la pila no tiene página web. Escribe export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=us-east-1 AWS_ENDPOINT_URL=http://cloud:4566, luego aws s3 mb s3://lab-bucket, y el terminal responde make_bucket: lab-bucket. aws s3 ls lo lista.

Qué pedir a los estudiantes que entreguen

Las respuestas de una sesión corta propia: un bucket con un objeto enviado, listado y leído, una cola con un mensaje enviado, recibido y borrado, una tabla con un elemento añadido, leído y consultado, y el error de una clave que no existe. Después una frase sobre lo que MiniStack no es. Una buena respuesta dice que es un emulador, una copia de práctica, y no AWS.

A basic lesson on this lab

Cloud Services Basics es una lección pequeña que se hace en este laboratorio. En ella el estudiante da la clave y la dirección, crea un bucket y guarda y lee un objeto, pide una clave que no existe, crea una cola y envía, recibe y borra un mensaje, crea una tabla y añade, lee y consulta elementos. Aprende también que solo tres servicios están activados y que lo que crea se conserva cuando el laboratorio se detiene y se inicia de nuevo.

Las cuentas personales gratuitas la tienen en el módulo Basics, que está en Inicio, cada centro puede copiarla desde la carpeta Basics de la Biblioteca, y un centro nuevo la tiene en un módulo llamado DevOps Labs (Sample). Es deliberadamente pequeña: muestra a un docente qué es una lección que se hace en un laboratorio, y el laboratorio hace el resto. Cópiala en un módulo propio para cambiarla.

El código en GitHub

El archivo compose no tiene Dockerfile: ejecuta una imagen pública estándar, ministackorg/ministack, fijada a una versión, con 256 MB de memoria y su estado en un volumen con nombre. MiniStack tiene licencia MIT y no lo distribuimos nosotros. Un ajuste del archivo activa solo S3, SQS y DynamoDB, y cualquier petición de otro servicio, Lambda incluido, se rechaza con un error. El laboratorio no tiene salida a internet ni contraseña, porque nada más puede llegar a la pila. Es un solo servicio, y un emulador: detalles de los servicios reales, como el número de cuenta en la dirección de una cola, difieren.

Ponlo como trabajo

Indica en la tarea qué hay que entregar.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-cloud con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Prueba este laboratorio, y lo que cuesta

Con una cuenta personal gratuita puedes seguir las lecciones básicas de este laboratorio, con crédito gratuito suficiente cada mes para seguir la mayoría de las lecciones y sin tarjeta. Para una clase, un centro tiene gratis sus primeros 365 días, hasta 50 alumnos, y después paga por alumno y año, con todos los laboratorios incluidos y el profesorado gratis.

Preguntas frecuentes

¿Es esto AWS?
No. Es MiniStack, un emulador que responde a las mismas peticiones de S3, SQS y DynamoDB. Nada en él se factura ni sale de la copia, y no comprueba ninguna contraseña. La línea de comandos de AWS es la real, así que lo que escriben los estudiantes se traslada a una cuenta propia.
¿Por qué está desactivado Lambda?
Una función Lambda es código que escribe el estudiante, y el emulador lo ejecutaría dentro del propio contenedor de la pila. Desactivar el servicio significa que no hay nada con que ejecutarlo: una petición de Lambda se rechaza con un error. El laboratorio enseña almacenamiento, colas y tablas, que no lo necesitan.
¿Por qué la lección da primero una clave y una dirección?
El terminal del laboratorio tiene la línea de comandos de AWS pero ninguna clave para la pila. La lección da una clave inventada, que el emulador no comprueba, y la dirección de la pila, que el AWS real no necesitaría.
¿Qué sigue ahí después de detener e iniciar el laboratorio?
Los buckets, objetos, colas y tablas que creaste. La pila guarda su estado en un volumen con nombre, que la plataforma conserva, y lo lee al arrancar. El terminal olvida la clave y la dirección, así que se vuelve a ejecutar el primer comando de la lección.