Introduction
Votre équipe a besoin d'un serveur pour une petite application de rapports. Dans ce laboratoire, vous lancerez une instance Amazon EC2, vous connecterez en SSH, modifierez le message d'accueil de l'application et testerez sa réponse dans AWS View. Vous terminerez ensuite l'instance et confirmerez son état final.
Vous devez connaître les commandes de base du terminal et le rôle d'un VPC, d'un sous-réseau et d'un groupe de sécurité. L'environnement fournit un réseau, une image Ubuntu, une paire de clés SSH et le logiciel de l'application. Vous créerez et configurerez vous-même l'instance de l'application.
Lien avec la certification
Ce laboratoire pratique les opérations programmatiques AWS et le choix d'EC2 comme service de calcul, liés aux tâches 3.1 et 3.3 des objectifs du domaine 3 d'AWS Certified Cloud Practitioner CLF-C02. Vous distinguerez aussi une image, un type d'instance et une instance en cours d'exécution.
Lancer l'instance de l'application
Dans cette étape, vous inspecterez une image préparée et lancerez une instance EC2 dans le réseau fourni.
Une instance EC2 est un serveur virtuel. Une Amazon Machine Image (AMI) fournit son système d'exploitation et ses logiciels initiaux. Un type d'instance définit une combinaison de capacités de calcul et de mémoire. Vous choisirez t3.micro, un petit type à usage général, pour cette application d'introduction.
Commencez dans le répertoire du projet :
cd /home/labex/project
Le fichier launch.env contient les identifiants de l'image, du sous-réseau et du groupe de sécurité préparés. Inspectez-le pour voir les ressources utilisées :
cat launch.env
Ces valeurs sont des identifiants de ressources et diffèrent selon les environnements. Chargez-les dans votre shell actuel avec source, qui lit les affectations de variables du fichier :
source launch.env
Inspectez l'AMI. L'option --image-ids sélectionne l'image et --query limite les champs affichés :
aws ec2 \
describe-images \
--image-ids "$AMI_ID" \
--query 'Images[].{Image:ImageId,Name:Name,Architecture:Architecture}'
Recherchez le nom d'image report-server-ubuntu-2204 et l'architecture x86_64. Cette image contient Ubuntu et l'application de rapports, ce qui permet de vous concentrer sur le lancement et l'exploitation du serveur.
Le sous-réseau détermine l'emplacement réseau de l'instance. Le groupe de sécurité fourni autorise SSH sur le port 22 et les requêtes de l'application sur le port 8081 depuis le réseau d'accès du laboratoire. La paire de clés report-key fournit la clé publique installée sur l'instance ; sa clé privée se trouve dans le répertoire du projet pour votre connexion SSH.
Lancez une instance avec les ressources préparées. --count 1 crée un serveur et le tag lui donne le nom identifiable 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 réponse contient l'identifiant de la nouvelle instance et son état initial. Enregistrez cet identifiant dans une variable shell pour les commandes suivantes. La syntaxe $(...) exécute la commande entre parenthèses et enregistre sa sortie ; --output text renvoie l'identifiant en texte brut :
INSTANCE_ID=$(aws ec2 \
describe-instances \
--filters Name=tag:Name,Values=report-server \
--query 'Reservations[0].Instances[0].InstanceId' \
--output text)
Inspectez l'état et les adresses de l'instance :
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name,PrivateIPv4:PrivateIpAddress,PublicIPv4:PublicIpAddress}'
Confirmez l'état running et la présence d'adresses IPv4 privée et publique. Si l'état est encore pending, attendez un instant et répétez la commande. L'adresse privée identifie le serveur dans son VPC ; l'adresse publique est la destination utilisée pour vous connecter via le réseau d'accès du laboratoire.
Se connecter et configurer l'application
Dans cette étape, vous vous connecterez à l'instance en SSH, modifierez le message d'accueil de l'application de rapports et testerez la réponse dans AWS View.
Récupérez l'adresse IPv4 publique de l'instance dans une autre variable shell :
PUBLIC_IP=$(aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[0].Instances[0].PublicIpAddress' \
--output text)
SSH crée une connexion terminal chiffrée au serveur. Les images Ubuntu utilisent le nom de connexion ubuntu. Le fichier ssh_config fourni sélectionne votre clé privée et le chemin de connexion du laboratoire ; -F indique à SSH de lire ce fichier de configuration :
ssh -F ssh_config ubuntu@"$PUBLIC_IP"
Votre terminal est maintenant dans l'instance de l'application. Confirmez l'utilisateur connecté :
whoami
La sortie doit être ubuntu. Cela distingue l'instance de l'application de votre terminal LabEx, où l'utilisateur est labex.
L'application fournie lit son message d'accueil dans /etc/report-app/config.json. Ce fichier système nécessite des privilèges administrateur pour être modifié. sudo tee écrit le texte suivant dans le fichier, et le here-document entre les marqueurs JSON fournit ce texte :
sudo tee /etc/report-app/config.json <<'JSON'
{
"message": "Hello from EC2"
}
JSON
L'application relit cette configuration à chaque requête. Utilisez curl pour appeler son endpoint de santé via l'adresse de bouclage de l'instance :
curl -sS http://127.0.0.1:8081/health
La réponse JSON doit identifier le service Report server et inclure "message": "Hello from EC2". Cela prouve que l'application répond dans l'instance avec votre configuration.
Quittez la session SSH pour revenir au terminal LabEx :
exit
Ouvrez AWS View et cliquez sur Refresh resources. Recherchez report-server dans le tableau des instances. Confirmez son état running et comparez son adresse IPv4 publique à celle renvoyée par la CLI.
Sous Application requests, sélectionnez l'instance en cours d'exécution et cliquez sur Check application. Confirmez une réponse HTTP 200 contenant Hello from EC2. Cette requête utilise l'adresse publique actuelle de l'instance et teste l'application via le réseau, en complément du test interne au serveur.

Exemple de point de contrôle : l'application renvoie HTTP 200 avec Hello from EC2. Vos identifiants de ressources et adresses seront différents.
Terminer votre serveur
Dans cette étape, vous terminerez l'instance de l'application et confirmerez qu'elle n'est plus en cours d'exécution.
La terminaison supprime définitivement l'instance. Utilisez l'identifiant enregistré pour sélectionner uniquement votre serveur d'application :
aws ec2 \
terminate-instances \
--instance-ids "$INSTANCE_ID"
La réponse affiche les états précédent et actuel. AWS CLI fournit aussi un waiter, qui interroge une ressource jusqu'à ce qu'elle atteigne l'état indiqué. Attendez la fin de la terminaison :
aws ec2 \
wait instance-terminated \
--instance-ids "$INSTANCE_ID"
Le waiter se termine sans sortie lorsque la condition est remplie. Inspectez l'état final :
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name}'
Confirmez terminated. L'enregistrement d'une instance peut rester visible après sa terminaison ; cela ne signifie pas que le serveur fonctionne encore.
Cliquez sur Refresh resources dans AWS View. L'instance doit afficher terminated et ne plus être disponible comme cible d'application en cours d'exécution. Conservez le réseau et la paire de clés préparés.
Résumé
Vous avez lancé une instance EC2 avec une AMI, un type d'instance, des ressources réseau et une paire de clés SSH. Vous vous êtes connecté au serveur, avez configuré son application de rapports et vérifié sa réponse dans AWS View. Enfin, vous avez terminé l'instance et confirmé son état final.



