AWS - EC2
Introduction
EC2 pour Elastic Compute Cloud est un service web d'Amazon permettant déployer des instances dîtes as a service.
Installation des prérequis
Deux paquets sont nécessaire à la manipulation des instances et des fichiers JSON pour AWS : aws-cli et jq.
Ils sont tous deux à installer selon votre OS.
Types d'instances
La liste complète des types d'instances est disponible ici : https://aws.amazon.com/fr/ec2/instance-types/
Liste AMI
Pour explorer la liste des AMI : https://us-east-1.console.aws.amazon.com/ec2/home?region=us-east-1#LaunchInstances:
Images | ID |
AMI Amazon Linux 2023 | ami-0f34c5ae932e6f0e4 |
Ubuntu 22.04 | ami-053b0d53c279acc90 |
Debian 11 | ami-01e5ff16fd6e8c542 |
RHEL 9 | ami-02978b79564e08f2f |
Déploiement en CLI
Création d'une clé d'accès SSH
aws ec2 create-key-pair --key-name <ACCESS_KEY_LABEL> --query 'KeyMaterial' --output text > <KEY.pem>
Configuration des accès IAM
Depuis la console IAM, créer un utilisateur CLI ayant les droits puis récupérer l'ACCESS KEY ID ainsi que l'ACCESS SECRET KEY (affichable uniquement à la création) :
Puis, configurer les paramètres d'AWS grâce aux commandes suivantes :
aws configure set aws_access_key_id <ACCESS_KEY_ID>
aws configure set aws_secret_access_key <ACCESS_SECRET_KEY>
La liste des régions est consultable à cette adresse :
Ex : us-east-1
aws configure set default.region <REGION>
aws configure set output json
Déploiement de l'instance
aws ec2 run-instances --image-id <AMI_ID> --instance-type <INSTANCE_TYPE> --security-group-ids <SG_ID> --key-name <ACCESS_KEY_LABEL> > <OUTPUT>.json
- <AMI_ID> : Image à utiliser (Amazon Linux, Ubuntu, Debian, Windows Server).
- <INSTANCE_TYPE> : Configuration de l'instance (ex : t2.micro).
- <ACCESS_KEY_LABEL> : Label de la clé d'accès SSH créé précédemment.
- <SG_ID> : ID du groupe de sécurité configurable depuis la console EC2.
- <OUTPUT> : Nom du fichier de sortie (important pour récupérer les informations de l'instance).
Informations sur l'instance
Avec l'ID de l'instance stockée dans le fichier json, il est possible d'obtenir l'adresse IP public de l'instance grâce à la commande suivante :
aws ec2 describe-instances --instance-ids $( jq -r '.Instances[0].InstanceId' <OUTPUT>.json ) | jq -r '.Reservations[0].Instances[0].PublicIpAddress'