AWS CLI vous permet de gérer vos ressources AWS depuis le terminal. En 3 commandes, vous saurez si tout fonctionne : installer, se connecter, vérifier son identité. Ce guide vous accompagne pas à pas, du premier aws --version jusqu’à l’automatisation de vos tâches quotidiennes.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »Niveau : Débutant · Durée : 20 minutes · Prérequis : savoir utiliser un terminal
À la fin de ce guide, vous saurez :
- Installer AWS CLI et vérifier votre identité
- Lister vos ressources S3 et EC2
- Filtrer les résultats pour n’afficher que l’essentiel
- Éviter les erreurs de débutant (mauvais compte, mauvaise région)
TL;DR — Votre première session AWS CLI
Section intitulée « TL;DR — Votre première session AWS CLI »- Installer : téléchargez et installez AWS CLI v2
- Configurer :
aws configureavec vos clés d’accès - Vérifier :
aws sts get-caller-identitypour confirmer votre identité - Lister :
aws s3 lspour voir vos buckets - Explorer :
aws ec2 describe-regions --output tablepour un premier résultat lisible
Étape 1 — Installer AWS CLI
Section intitulée « Étape 1 — Installer AWS CLI »curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installbrew install awscliwinget install Amazon.AWSCLIVérifiez l’installation :
aws --versionaws-cli/2.x.x Python/3.x.x Linux/... exe/x86_64Activer l’autocomplétion (recommandé)
Section intitulée « Activer l’autocomplétion (recommandé) »L’autocomplétion vous fait gagner un temps considérable : tapez aws ec2 des puis Tab, et AWS CLI complète automatiquement en aws ec2 describe-. Cela vous permet aussi de découvrir les commandes disponibles en tapant Tab Tab après un service.
# Trouver le chemin de aws_completerwhich aws_completer
# Activer l'autocomplétionecho 'complete -C /usr/local/bin/aws_completer aws' >> ~/.bashrc
# Recharger la configurationsource ~/.bashrcTester : tapez aws s3 puis Tab Tab → vous devriez voir cp, ls, mb, mv, rb, rm, sync…
# Activer le support des complétions Bash dans Zshecho 'autoload bashcompinit && bashcompinit' >> ~/.zshrc
# Trouver le chemin de aws_completerwhich aws_completer
# Activer l'autocomplétionecho 'complete -C /usr/local/bin/aws_completer aws' >> ~/.zshrc
# Recharger la configurationsource ~/.zshrcTester : tapez aws s3 puis Tab Tab → vous devriez voir cp, ls, mb, mv, rb, rm, sync…
Étape 2 — Se connecter à son compte AWS
Section intitulée « Étape 2 — Se connecter à son compte AWS »Méthode rapide : clés d’accès
Section intitulée « Méthode rapide : clés d’accès »Lancez l’assistant de configuration :
aws configureL’assistant vous demande 4 informations :
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: eu-west-3Default output format [None]: json| Champ | Où le trouver | Exemple |
|---|---|---|
| Access Key ID | Console AWS → IAM → Utilisateurs → Clés d’accès | AKIA... |
| Secret Access Key | Affiché UNE SEULE fois à la création | wJalr... |
| Region | eu-west-3 pour Paris | eu-west-3 |
| Output format | json (défaut) ou table (lisible) | json |
Méthode moderne : SSO (recommandé en entreprise)
Section intitulée « Méthode moderne : SSO (recommandé en entreprise) »Si votre entreprise utilise AWS IAM Identity Center (ex-SSO) :
aws configure ssoL’assistant ouvre votre navigateur pour l’authentification. Une fois validé, vous pouvez vous reconnecter avec :
aws sso login --profile mon-profil-ssoÉtape 3 — Vérifier son identité (le “whoami” AWS)
Section intitulée « Étape 3 — Vérifier son identité (le “whoami” AWS) »Avant toute commande potentiellement destructrice, vérifiez sur quel compte vous travaillez :
aws sts get-caller-identity{ "UserId": "AIDAUA4AJK645ULWSPQ3I", "Account": "276757567417", "Arn": "arn:aws:iam::276757567417:user/stephane_robert"}Ce résultat vous confirme :
- Account : le numéro du compte AWS (vérifiez que c’est le bon !)
- Arn : votre identité (utilisateur IAM, rôle assumé, etc.)
Checklist avant commande dangereuse
Section intitulée « Checklist avant commande dangereuse »# 1. Sur quel compte suis-je ?aws sts get-caller-identity
# 2. Quelle configuration est active ?aws configure list
# 3. Y a-t-il une variable d'environnement qui override ?echo $AWS_PROFILEenv | grep AWS_Étape 4 — Vos premières commandes (lister des ressources)
Section intitulée « Étape 4 — Vos premières commandes (lister des ressources) »Maintenant que vous êtes connecté, explorons vos ressources. Vous allez lancer 4 commandes qui vous permettront de comprendre comment AWS CLI fonctionne.
Comment fonctionne AWS CLI ?
Section intitulée « Comment fonctionne AWS CLI ? »Avant de commencer, comprenons la logique. Toutes les commandes AWS CLI suivent le même schéma : vous dites à AWS quel service vous voulez interroger (S3, EC2, IAM…) et quelle action effectuer (lister, créer, supprimer…).
🧠 Modèle mental — aws = une commande, un service, une action
Toutes les commandes AWS CLI suivent le même schéma : vous indiquez le service (s3, ec2, iam...) puis l'action à effectuer. La réponse arrive en JSON par défaut.
Points clés
- Toujours la même structure : aws <service> <action>
- La sortie est en JSON par défaut (--output table pour du lisible)
- Chaque commande cible UNE région (eu-west-3 = Paris)
Règles d'or
Vocabulaire essentiel
- Région
- Zone géographique AWS (eu-west-3 = Paris)
- Profil
- Configuration nommée pour un compte AWS
- ARN
- Identifiant unique d'une ressource AWS
Syntaxe complète
Section intitulée « Syntaxe complète »aws [options] <service> <action> [paramètres]aws [options] <service> help # Aide sur un serviceaws [options] <service> <action> help # Aide sur une actionLes 3 parties d’une commande AWS CLI
Section intitulée « Les 3 parties d’une commande AWS CLI »La commande aws suit toujours la même logique :
| Partie | Question | Exemples | Obligatoire ? |
|---|---|---|---|
| Service | Quel service AWS interroger ? | s3, ec2, iam, rds, lambda | ✅ Oui |
| Action | Que faire sur ce service ? | ls, describe-instances, create-bucket | ✅ Oui |
| Options/Paramètres | Comment filtrer ou formater ? | --output table, --region eu-west-3, --filters | ❌ Non (valeurs par défaut) |
Service — Le service AWS que vous voulez interroger (S3 pour le stockage, EC2 pour les machines virtuelles, IAM pour les accès…). AWS CLI couvre 200+ services.
Action — L’opération à effectuer : lister (ls, describe-*, list-*), créer (create-*), supprimer (delete-*, terminate-*), modifier (update-*, modify-*).
Options/Paramètres (optionnels) — Modifient le comportement : changer la région, le format de sortie, filtrer les résultats. Sans options, AWS utilise les valeurs de ~/.aws/config.
Exemple concret :
# Service=ec2, Action=describe-instances, Options=--output tableaws ec2 describe-instances --output table# ↑ ↑ ↑# service action optionsOptions globales
Section intitulée « Options globales »Options globales principales :
| Option | Description | Exemple |
|---|---|---|
--profile NOM | Utilise un profil spécifique | aws s3 ls --profile production |
--region REGION | Force une région | aws ec2 describe-instances --region eu-west-3 |
--output FORMAT | Format de sortie (json/table/text/yaml) | aws s3 ls --output table |
--query EXPR | Filtre les résultats (JMESPath) | aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' |
--filters NAME=X,Values=Y | Filtre côté serveur | aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' |
Quelques commandes
Section intitulée « Quelques commandes »voici des exemples concrets de commandes AWS CLI courantes :
# Forme minimale : service + actionaws s3 ls
# Avec paramètresaws s3 ls s3://mon-bucket
# Avec options globalesaws ec2 describe-instances --output table --region eu-west-3
# Avec filtrage serveuraws ec2 describe-instances --filters 'Name=instance-state-name,Values=running'
# Avec filtrage client (--query)aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name]'
# Avec profilaws s3 ls --profile production
# Depuis un pipe (moins courant)echo "mon-bucket" | xargs -I {} aws s3 ls s3://{}Découvrir les services AWS par vous-même
Section intitulée « Découvrir les services AWS par vous-même »AWS propose plus de 200 services (RDS, Lambda, IAM, CloudWatch, DynamoDB…). Il est impossible de tous les documenter dans un seul guide. Mais la bonne nouvelle, c’est que vous savez déjà chercher.
Règle d’or : sur AWS CLI, 90% des services suivent les mêmes conventions :
describe-*oulist-*pour lirecreate-*pour créerdelete-*outerminate-*pour supprimerupdate-*oumodify-*pour modifier
Trois techniques pour explorer un nouveau service :
-
Lister les commandes disponibles avec
helpFenêtre de terminal # Voir tous les services disponiblesaws help# Voir toutes les actions d'un serviceaws rds helpAppuyez sur q pour quitter l’aide. Utilisez / pour chercher un mot-clé.
-
Utiliser l’auto-complétion pour découvrir
Si vous avez activé l’autocomplétion (voir section “Confort”), tapez
awspuis Tab Tab pour voir tous les services :Fenêtre de terminal aws <Tab><Tab># Affiche : s3, ec2, rds, lambda, iam, cloudwatch...Puis sur un service :
Fenêtre de terminal aws rds <Tab><Tab># Affiche : describe-db-instances, create-db-instance, delete-db-instance... -
Activer l’autoprompt interactif
L’autoprompt vous guide en temps réel avec des suggestions contextuelles :
Fenêtre de terminal aws rds --cli-auto-promptUtilisez les flèches pour naviguer, Tab pour compléter, F3 pour voir la doc de l’option sélectionnée.
Maintenant que vous savez explorer, passons au filtrage pour rendre ces sorties exploitables.
Étape 5 — Filtrer les résultats
Section intitulée « Étape 5 — Filtrer les résultats »Le JSON retourné par AWS peut être volumineux. Deux méthodes pour n’afficher que l’essentiel.
Méthode 1 : —output table + colonnes
Section intitulée « Méthode 1 : —output table + colonnes »Pour un affichage lisible immédiat :
aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' \ --output table-----------------------------------------| DescribeInstances |+----------------------+---------+------+| i-0abc123def456 | running | t3.micro || i-0def789abc012 | stopped | t3.small |+----------------------+---------+------+Méthode 2 : —filters (côté serveur)
Section intitulée « Méthode 2 : —filters (côté serveur) »Les filtres --filters sont traités par AWS avant l’envoi des données. Plus rapide pour les gros listings :
# Uniquement les instances en cours d'exécutionaws ec2 describe-instances --filters "Name=instance-state-name,Values=running"Progression —query (du simple au complet)
Section intitulée « Progression —query (du simple au complet) »Commencez simple, puis affinez :
# 1. Extraire UN champaws ec2 describe-regions --query 'Regions[].RegionName'
# 2. Extraire DEUX champsaws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name]'
# 3. Filtrer + extraireaws ec2 describe-instances \ --query 'Reservations[].Instances[?State.Name==`running`].InstanceId' \ --output textÉtape 6 — Gérer plusieurs comptes (profils)
Section intitulée « Étape 6 — Gérer plusieurs comptes (profils) »Si vous travaillez avec plusieurs comptes AWS (dev, staging, prod), créez des profils séparés.
Créer un profil
Section intitulée « Créer un profil »aws configure --profile productionUtiliser un profil
Section intitulée « Utiliser un profil »aws s3 ls --profile productionOu définissez-le pour toute la session :
export AWS_PROFILE=productionaws s3 ls # utilise automatiquement "production"Lister les profils configurés
Section intitulée « Lister les profils configurés »aws configure list-profilesOù sont stockés les profils ?
Section intitulée « Où sont stockés les profils ? »Deux fichiers dans ~/.aws/ :
[default]aws_access_key_id = AKIA...aws_secret_access_key = wJalr...
[production]aws_access_key_id = AKIA...aws_secret_access_key = wJalr...[default]region = eu-west-3output = json
[profile production]region = eu-west-1output = tableRecettes du quotidien
Section intitulée « Recettes du quotidien »Ces recettes couvrent les cas d'usage les plus fréquents. Cliquez sur un pattern pour voir la formule complète et un exemple prêt à copier.
Vérifier son identité Base Confirmer le compte AWS actif avant toute action
aws sts get-caller-identity --profile production
aws sts get-caller-identity aws sts get-caller-identity --profile production Lister les buckets S3 Base Voir tous les buckets du compte
aws s3 ls --profile mon-compte
aws s3 ls aws s3 ls --profile mon-compte Explorer un bucket Base Voir le contenu d'un bucket avec tailles lisibles
aws s3 ls s3://mon-backup --recursive --human-readable --summarize
aws s3 ls s3://BUCKET --recursive --human-readable aws s3 ls s3://mon-backup --recursive --human-readable --summarize -
BUCKET— Nom du bucket S3
Lister les régions Base Voir toutes les régions AWS disponibles
aws ec2 describe-regions --query 'Regions[].RegionName' --output text
aws ec2 describe-regions --output table aws ec2 describe-regions --query 'Regions[].RegionName' --output text Lister les instances EC2 Base Voir les instances avec ID, état et type
aws ec2 describe-instances --output table
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType]' --output table aws ec2 describe-instances --output table Instances en cours Base Filtrer les instances running uniquement
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' --query 'Reservations[].Instances[].InstanceId' --output text
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' --query 'Reservations[].Instances[].InstanceId' --output text Lister les utilisateurs IAM Base Voir tous les utilisateurs du compte
aws iam list-users --query 'Users[].[UserName,CreateDate]' --output table
aws iam list-users --output table aws iam list-users --query 'Users[].[UserName,CreateDate]' --output table Voir la config active Base Diagnostic : quelle config est utilisée ?
aws configure list --profile production
aws configure list aws configure list --profile production Lister les profils Base Voir tous les profils configurés
aws configure list-profiles
aws configure list-profiles aws configure list-profiles Utiliser un profil Base Exécuter une commande sur un autre compte
aws s3 ls --profile production
aws COMMAND --profile PROFILE aws s3 ls --profile production -
PROFILE— Nom du profil dans ~/.aws/config
Aucune recette ne correspond à votre recherche.
Pièges courants
Section intitulée « Pièges courants »Ces erreurs courantes peuvent faire perdre du temps ou causer des dégâts. Les pièges les plus critiques sont affichés en premier.
Exécuter sur le mauvais compte aws ec2 terminate-instances --instance-ids i-xxx
Danger
aws ec2 terminate-instances --instance-ids i-xxx
aws sts get-caller-identity && aws ec2 terminate-instances --instance-ids i-xxx --profile dev Credentials dans Git Fichier .env ou code avec aws_access_key_id = AKIA...
Danger
Fichier .env ou code avec aws_access_key_id = AKIA...
Région non configurée aws ec2 describe-instances
Attention
aws ec2 describe-instances
aws ec2 describe-instances --region eu-west-3 Variable d'environnement oubliée export AWS_PROFILE=prod (fait il y a 2 heures)
Attention
export AWS_PROFILE=prod (fait il y a 2 heures)
env | grep AWS_ && unset AWS_PROFILE AWS_ACCESS_KEY_ID Confort au quotidien
Section intitulée « Confort au quotidien »Désactiver le pager
Section intitulée « Désactiver le pager »Par défaut, AWS CLI ouvre less pour les longues sorties. Pour désactiver :
# Ponctuelaws s3 ls --no-cli-pager
# Permanent (dans ~/.aws/config)[default]cli_pager =
# Ou via variable d'environnementexport AWS_PAGER=""Activer l’autocomplétion
Section intitulée « Activer l’autocomplétion »# Trouver le cheminwhich aws_completer
# Bashecho 'complete -C /usr/local/bin/aws_completer aws' >> ~/.bashrcsource ~/.bashrc
# Zshecho 'autoload bashcompinit && bashcompinit' >> ~/.zshrcecho 'complete -C /usr/local/bin/aws_completer aws' >> ~/.zshrcsource ~/.zshrcDécouvrir avec l’autoprompt
Section intitulée « Découvrir avec l’autoprompt »L’autoprompt suggère les commandes et options en temps réel :
# Activer ponctuellementaws ec2 --cli-auto-prompt
# Activer par défautexport AWS_CLI_AUTO_PROMPT=onUtilisez les flèches pour naviguer, Tab pour compléter, F3 pour la doc.
Formats de sortie
Section intitulée « Formats de sortie »| Format | Usage | Exemple |
|---|---|---|
json | Scripts, parsing avec jq | --output json |
table | Lecture humaine | --output table |
text | Scripts shell simples | --output text |
yaml | Lisibilité, configs | --output yaml |
# Comparer les formatsaws ec2 describe-regions --output jsonaws ec2 describe-regions --output tableaws ec2 describe-regions --query 'Regions[].RegionName' --output textAide-mémoire
Section intitulée « Aide-mémoire » 📋
Cheatsheet aws
Pour aller plus loin
Section intitulée « Pour aller plus loin »Annexe : endpoints personnalisés (clouds compatibles)
Section intitulée « Annexe : endpoints personnalisés (clouds compatibles) »AWS CLI fonctionne avec tout service compatible S3/EC2 :
# S3 vers MinIO localaws s3 ls --endpoint-url http://localhost:9000
# S3 vers Outscaleaws s3 ls --endpoint-url https://oos.eu-west-2.outscale.com --profile outscaleConfiguration permanente dans ~/.aws/config :
[profile outscale-s3]region = eu-west-2output = jsonservices = outscale-services
[services outscale-services]s3 = endpoint_url = https://oos.eu-west-2.outscale.comec2 = endpoint_url = https://fcu.eu-west-2.outscale.com| Service Outscale | Endpoint |
|---|---|
| S3 (OOS) | https://oos.{region}.outscale.com |
| EC2 (FCU) | https://fcu.{region}.outscale.com |
Annexe : alias et scripts (niveau intermédiaire)
Section intitulée « Annexe : alias et scripts (niveau intermédiaire) »Alias simples
Section intitulée « Alias simples »Créez des raccourcis dans ~/.aws/cli/alias :
[toplevel]whoami = sts get-caller-identityls-buckets = s3 lsls-instances = ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType]' --output tableUtilisation :
aws whoamiaws ls-bucketsaws ls-instancesAlias avec scripts (avancé)
Section intitulée « Alias avec scripts (avancé) »[toplevel]myip = !f() { curl -s https://ifconfig.me }; f
authorize-my-ip = !f() { ip=$(curl -s https://ifconfig.me) aws ec2 authorize-security-group-ingress --group-id ${1} --cidr $ip/32 --protocol tcp --port 22 }; fAnnexe : options avancées
Section intitulée « Annexe : options avancées »Mode debug
Section intitulée « Mode debug »Pour diagnostiquer les erreurs d’authentification :
aws sts get-caller-identity --debug 2>&1 | head -50Dry-run (simulation)
Section intitulée « Dry-run (simulation) »Certaines commandes EC2 supportent --dry-run :
aws ec2 run-instances --dry-run --image-id ami-xxx --instance-type t3.microPagination
Section intitulée « Pagination »Pour les gros listings :
# Désactiver la pagination automatiqueaws ec2 describe-instances --no-paginate
# Limiter le nombre de résultatsaws iam list-users --max-items 100Générer un squelette JSON
Section intitulée « Générer un squelette JSON »Pour les commandes complexes :
aws ec2 run-instances --generate-cli-skeleton > instance-params.json# Éditez le fichier, puis :aws ec2 run-instances --cli-input-json file://instance-params.json