Introducción
Tu equipo necesita un servidor para una pequeña aplicación de informes. En este laboratorio lanzarás una instancia Amazon EC2, te conectarás por SSH, cambiarás el saludo de la aplicación y probarás su respuesta en AWS View. Después terminarás la instancia y confirmarás su estado final.
Debes conocer los comandos básicos del terminal y la función de una VPC, una subred y un grupo de seguridad. El entorno proporciona una red, una imagen Ubuntu, un par de claves SSH y el software de la aplicación. Crearás y configurarás la instancia de la aplicación.
Relación con la certificación
Este laboratorio practica operaciones programáticas de AWS y la elección de EC2 como servicio de computación, relacionadas con las tareas 3.1 y 3.3 de los objetivos del dominio 3 de AWS Certified Cloud Practitioner CLF-C02. También distinguirás una imagen, un tipo de instancia y una instancia en ejecución.
Lanzar la instancia de la aplicación
En este paso inspeccionarás una imagen preparada y lanzarás una instancia EC2 en la red proporcionada.
Una instancia EC2 es un servidor virtual. Una Amazon Machine Image (AMI) proporciona su sistema operativo y software inicial. Un tipo de instancia especifica una combinación de capacidad de cómputo y memoria. Elegirás t3.micro, un tipo pequeño de uso general, para esta aplicación introductoria.
Empieza en el directorio del proyecto:
cd /home/labex/project
El archivo launch.env contiene los identificadores de la imagen, la subred y el grupo de seguridad preparados. Inspecciónalo para ver los recursos que usarás:
cat launch.env
Los valores son ID de recursos y serán distintos entre entornos. Cárgalos en tu shell actual con source, que lee las asignaciones de variables del archivo:
source launch.env
Inspecciona la AMI. La opción --image-ids selecciona la imagen y --query limita los campos mostrados:
aws ec2 \
describe-images \
--image-ids "$AMI_ID" \
--query 'Images[].{Image:ImageId,Name:Name,Architecture:Architecture}'
Busca el nombre de imagen report-server-ubuntu-2204 y la arquitectura x86_64. Esta imagen contiene Ubuntu y la aplicación de informes, para que puedas concentrarte en lanzar y operar el servidor.
La subred determina la ubicación de la instancia en la red. El grupo de seguridad proporcionado permite SSH en el puerto 22 y solicitudes a la aplicación en el puerto 8081 desde la red de acceso del laboratorio. El par de claves report-key proporciona la clave pública instalada en la instancia; su clave privada está en el directorio del proyecto para la conexión SSH.
Lanza una instancia con los recursos preparados. --count 1 crea un servidor y la etiqueta le da el nombre reconocible report-server:
aws ec2 \
run-instances \
--image-id "$AMI_ID" \
--instance-type t3.micro \
--subnet-id "$SUBNET_ID" \
--security-group-ids "$SECURITY_GROUP_ID" \
--key-name report-key \
--count 1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=report-server}]'
La respuesta contiene el ID de la nueva instancia y su estado inicial. Guarda el ID en una variable de shell para los siguientes comandos. La sintaxis $(...) ejecuta el comando entre paréntesis y guarda su salida; --output text devuelve el ID en texto plano:
INSTANCE_ID=$(aws ec2 \
describe-instances \
--filters Name=tag:Name,Values=report-server \
--query 'Reservations[0].Instances[0].InstanceId' \
--output text)
Inspecciona el estado y las direcciones de la instancia:
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name,PrivateIPv4:PrivateIpAddress,PublicIPv4:PublicIpAddress}'
Confirma el estado running y la presencia de direcciones IPv4 privada y pública. Si todavía aparece pending, espera un momento y repite el comando de inspección. La dirección privada identifica el servidor dentro de su VPC; la pública es el destino que usarás para conectarte a través de la red de acceso del laboratorio.
Conectarse y configurar la aplicación
En este paso te conectarás a la instancia por SSH, cambiarás el saludo de la aplicación de informes y probarás la respuesta en AWS View.
Obtén la dirección IPv4 pública de la instancia y guárdala en otra variable de shell:
PUBLIC_IP=$(aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[0].Instances[0].PublicIpAddress' \
--output text)
SSH crea una conexión de terminal cifrada al servidor. Las imágenes Ubuntu usan el usuario ubuntu. El archivo ssh_config proporcionado selecciona tu clave privada y la ruta de conexión del laboratorio; -F indica a SSH que lea ese archivo de configuración:
ssh -F ssh_config ubuntu@"$PUBLIC_IP"
Tu terminal está ahora dentro de la instancia de la aplicación. Confirma el usuario conectado:
whoami
La salida debe ser ubuntu. Esto distingue la instancia de la aplicación del terminal de LabEx, cuyo usuario es labex.
La aplicación proporcionada lee su saludo desde /etc/report-app/config.json. Actualizar este archivo del sistema requiere privilegios de administrador. sudo tee escribe el siguiente texto en el archivo y el here-document entre los marcadores JSON proporciona ese texto:
sudo tee /etc/report-app/config.json <<'JSON'
{
"message": "Hello from EC2"
}
JSON
La aplicación vuelve a leer esta configuración en cada solicitud. Usa curl para consultar su endpoint de salud a través de la dirección de loopback de la instancia:
curl -sS http://127.0.0.1:8081/health
La respuesta JSON debe identificar el servicio Report server e incluir "message": "Hello from EC2". Esto demuestra que la aplicación responde dentro de la instancia con tu configuración.
Sal de la sesión SSH para volver al terminal de LabEx:
exit
Abre AWS View y pulsa Refresh resources. Busca report-server en la tabla de instancias. Confirma el estado running y compara su dirección IPv4 pública con la devuelta por la CLI.
En Application requests, selecciona la instancia en ejecución y pulsa Check application. Confirma una respuesta HTTP 200 que contenga Hello from EC2. Esta solicitud usa la dirección pública actual de la instancia y prueba la aplicación a través de la red, además de la comprobación dentro del servidor.

Ejemplo de comprobación: la aplicación devuelve HTTP 200 con Hello from EC2. Tus ID de recursos y direcciones serán distintos.
Terminar tu servidor
En este paso terminarás la instancia de la aplicación y confirmarás que ya no esté en ejecución.
La terminación elimina permanentemente la instancia. Usa el ID guardado para seleccionar solo tu servidor de aplicación:
aws ec2 \
terminate-instances \
--instance-ids "$INSTANCE_ID"
La respuesta muestra los estados anterior y actual. AWS CLI también proporciona un waiter, que consulta un recurso hasta que alcance el estado indicado. Espera a que termine la terminación:
aws ec2 \
wait instance-terminated \
--instance-ids "$INSTANCE_ID"
El waiter termina sin salida cuando se cumple la condición. Inspecciona el estado final:
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name}'
Confirma terminated. El registro de una instancia puede seguir visible después de terminarla; esto no significa que el servidor siga en ejecución.
Pulsa Refresh resources en AWS View. La instancia debe mostrar terminated y ya no estar disponible como destino de aplicación en ejecución. Conserva la red y el par de claves preparados.
Resumen
Has lanzado una instancia EC2 con una AMI, un tipo de instancia, recursos de red y un par de claves SSH. Te has conectado al servidor, configurado su aplicación de informes y verificado la respuesta en AWS View. Finalmente, has terminado la instancia y confirmado su estado final.



