Aller au contenu
Cloud medium

AWS CLI : premiers pas et commandes essentielles

23 min de lecture

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.

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)
  1. Installer : téléchargez et installez AWS CLI v2
  2. Configurer : aws configure avec vos clés d'accès
  3. Vérifier : aws sts get-caller-identity pour confirmer votre identité
  4. Lister : aws s3 ls pour voir vos buckets
  5. Explorer : aws ec2 describe-regions --output table pour un premier résultat lisible
Fenêtre de terminal
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Vérifiez l'installation :

Fenêtre de terminal
aws --version
Résultat attendu
aws-cli/2.x.x Python/3.x.x Linux/... exe/x86_64

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.

Fenêtre de terminal
# Trouver le chemin de aws_completer
which aws_completer
# Activer l'autocomplétion
echo 'complete -C /usr/local/bin/aws_completer aws' >> ~/.bashrc
# Recharger la configuration
source ~/.bashrc

Tester : tapez aws s3 puis Tab Tab → vous devriez voir cp, ls, mb, mv, rb, rm, sync...

Lancez l'assistant de configuration :

Fenêtre de terminal
aws configure

L'assistant vous demande 4 informations :

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: eu-west-3
Default output format [None]: json
ChampOù le trouverExemple
Access Key IDConsole AWS → IAM → Utilisateurs → Clés d'accèsAKIA...
Secret Access KeyAffiché UNE SEULE fois à la créationwJalr...
Regioneu-west-3 pour Pariseu-west-3
Output formatjson (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) :

Fenêtre de terminal
aws configure sso

L'assistant ouvre votre navigateur pour l'authentification. Une fois validé, vous pouvez vous reconnecter avec :

Fenêtre de terminal
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 :

Fenêtre de terminal
aws sts get-caller-identity
Résultat
{
"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.)
Fenêtre de terminal
# 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_PROFILE
env | 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.

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.

Structure d'une commande AWS CLI : aws + service + action + options

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

1
Toujours vérifier sur quel compte on travaille aws sts get-caller-identity évite de supprimer des ressources en production
2
Ne jamais mettre ses clés dans le code Les credentials dans Git = compte compromis en quelques minutes

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
Fenêtre de terminal
aws [options] <service> <action> [paramètres]
aws [options] <service> help # Aide sur un service
aws [options] <service> <action> help # Aide sur une action

La commande aws suit toujours la même logique :

PartieQuestionExemplesObligatoire ?
ServiceQuel service AWS interroger ?s3, ec2, iam, rds, lambda✅ Oui
ActionQue faire sur ce service ?ls, describe-instances, create-bucket✅ Oui
Options/ParamètresComment 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 :

Fenêtre de terminal
# Service=ec2, Action=describe-instances, Options=--output table
aws ec2 describe-instances --output table
# ↑ ↑ ↑
# service action options

Options globales principales :

OptionDescriptionExemple
--profile NOMUtilise un profil spécifiqueaws s3 ls --profile production
--region REGIONForce une régionaws ec2 describe-instances --region eu-west-3
--output FORMATFormat de sortie (json/table/text/yaml)aws s3 ls --output table
--query EXPRFiltre les résultats (JMESPath)aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
--filters NAME=X,Values=YFiltre côté serveuraws ec2 describe-instances --filters 'Name=instance-state-name,Values=running'

voici des exemples concrets de commandes AWS CLI courantes :

Fenêtre de terminal
# Forme minimale : service + action
aws s3 ls
# Avec paramètres
aws s3 ls s3://mon-bucket
# Avec options globales
aws ec2 describe-instances --output table --region eu-west-3
# Avec filtrage serveur
aws 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 profil
aws s3 ls --profile production
# Depuis un pipe (moins courant)
echo "mon-bucket" | xargs -I {} aws s3 ls s3://{}

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-* ou list-* pour lire
  • create-* pour créer
  • delete-* ou terminate-* pour supprimer
  • update-* ou modify-* pour modifier

Trois techniques pour explorer un nouveau service :

  1. Lister les commandes disponibles avec help

    Fenêtre de terminal
    # Voir tous les services disponibles
    aws help
    # Voir toutes les actions d'un service
    aws rds help

    Appuyez sur q pour quitter l'aide. Utilisez / pour chercher un mot-clé.

  2. Utiliser l'auto-complétion pour découvrir

    Si vous avez activé l'autocomplétion (voir section "Confort"), tapez aws puis 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...
  3. Activer l'autoprompt interactif

    L'autoprompt vous guide en temps réel avec des suggestions contextuelles :

    Fenêtre de terminal
    aws rds --cli-auto-prompt

    Utilisez 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.

Le JSON retourné par AWS peut être volumineux. Deux méthodes pour n'afficher que l'essentiel.

Pour un affichage lisible immédiat :

Fenêtre de terminal
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' \
--output table
Résultat
-----------------------------------------
| DescribeInstances |
+----------------------+---------+------+
| i-0abc123def456 | running | t3.micro |
| i-0def789abc012 | stopped | t3.small |
+----------------------+---------+------+

Les filtres --filters sont traités par AWS avant l'envoi des données. Plus rapide pour les gros listings :

Fenêtre de terminal
# Uniquement les instances en cours d'exécution
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running"

Commencez simple, puis affinez :

Fenêtre de terminal
# 1. Extraire UN champ
aws ec2 describe-regions --query 'Regions[].RegionName'
# 2. Extraire DEUX champs
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name]'
# 3. Filtrer + extraire
aws ec2 describe-instances \
--query 'Reservations[].Instances[?State.Name==`running`].InstanceId' \
--output text

Si vous travaillez avec plusieurs comptes AWS (dev, staging, prod), créez des profils séparés.

Fenêtre de terminal
aws configure --profile production
Fenêtre de terminal
aws s3 ls --profile production

Ou définissez-le pour toute la session :

Fenêtre de terminal
export AWS_PROFILE=production
aws s3 ls # utilise automatiquement "production"
Fenêtre de terminal
aws configure list-profiles

Deux fichiers dans ~/.aws/ :

~/.aws/credentials
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = wJalr...
[production]
aws_access_key_id = AKIA...
aws_secret_access_key = wJalr...
~/.aws/config
[default]
region = eu-west-3
output = json
[profile production]
region = eu-west-1
output = table

Ces commandes couvrent les opérations les plus fréquentes avec AWS CLI : vérifier son identité, lister ses ressources et basculer entre comptes.

Confirmer le compte AWS actif avant toute action — le réflexe de sécurité de base.

Fenêtre de terminal
aws sts get-caller-identity
# Exemple
aws sts get-caller-identity --profile production

Voir tous les buckets S3 du compte.

Fenêtre de terminal
aws s3 ls
# Sur un profil donné
aws s3 ls --profile mon-compte

Voir le contenu d'un bucket avec des tailles lisibles.

Fenêtre de terminal
aws s3 ls s3://BUCKET --recursive --human-readable
# Exemple
aws s3 ls s3://mon-backup --recursive --human-readable --summarize

BUCKET est le nom du bucket S3 à explorer.

Voir toutes les régions AWS disponibles.

Fenêtre de terminal
aws ec2 describe-regions --output table
# Extraire seulement les noms
aws ec2 describe-regions --query 'Regions[].RegionName' --output text

Voir les instances avec leur ID, leur état et leur type.

Fenêtre de terminal
aws ec2 describe-instances \
--query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType]' \
--output table
# Vue brute complète
aws ec2 describe-instances --output table

Filtrer pour ne garder que les instances running.

Fenêtre de terminal
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running'
# Extraire seulement les IDs
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' \
--query 'Reservations[].Instances[].InstanceId' --output text

Voir tous les utilisateurs IAM du compte.

Fenêtre de terminal
aws iam list-users --output table
# Avec date de création
aws iam list-users --query 'Users[].[UserName,CreateDate]' --output table

Diagnostiquer quelle configuration AWS CLI est réellement utilisée.

Fenêtre de terminal
aws configure list
# Sur un profil donné
aws configure list --profile production

Voir tous les profils configurés sur la machine.

Fenêtre de terminal
aws configure list-profiles

Exécuter une commande sur un autre compte AWS.

Fenêtre de terminal
aws COMMAND --profile PROFILE
# Exemple
aws s3 ls --profile production

PROFILE est le nom du profil défini dans ~/.aws/config. Pour fixer le profil sur toute la session : export AWS_PROFILE=production.

Ces erreurs sont les plus fréquentes en début de prise en main d'AWS CLI. Plusieurs peuvent coûter cher — facture ou incident de production.

Fenêtre de terminal
aws ec2 terminate-instances --instance-ids i-xxx

Symptôme : une instance de production est supprimée à la place d'une instance de dev.

Cause : le profil par défaut pointe vers le compte de production. Vérifiez toujours l'identité avant une commande destructrice.

Fenêtre de terminal
aws sts get-caller-identity && \
aws ec2 terminate-instances --instance-ids i-xxx --profile dev
Fenêtre de terminal
aws ec2 describe-instances

Symptôme : message You must specify a region, ou résultats systématiquement vides.

Cause : aucune région par défaut n'est définie dans ~/.aws/config.

Fenêtre de terminal
aws ec2 describe-instances --region eu-west-3

Un fichier .env ou du code contient aws_access_key_id = AKIA....

Symptôme : compte AWS compromis, factures astronomiques.

Cause : des clés commitées dans le dépôt sont scannées par des bots en quelques minutes. Stockez toujours les credentials dans ~/.aws/credentials ou en variables d'environnement, jamais dans le code.

Un export AWS_PROFILE=prod lancé deux heures plus tôt est toujours actif.

Symptôme : les commandes s'exécutent sur le mauvais compte malgré un --profile dev explicite.

Cause : AWS_ACCESS_KEY_ID ou AWS_PROFILE dans l'environnement a priorité sur le flag --profile.

Fenêtre de terminal
env | grep AWS_ && unset AWS_PROFILE AWS_ACCESS_KEY_ID

Par défaut, AWS CLI ouvre less pour les longues sorties. Pour désactiver :

Fenêtre de terminal
# Ponctuel
aws s3 ls --no-cli-pager
# Permanent (dans ~/.aws/config)
[default]
cli_pager =
# Ou via variable d'environnement
export AWS_PAGER=""
Fenêtre de terminal
# Trouver le chemin
which aws_completer
# Bash
echo 'complete -C /usr/local/bin/aws_completer aws' >> ~/.bashrc
source ~/.bashrc
# Zsh
echo 'autoload bashcompinit && bashcompinit' >> ~/.zshrc
echo 'complete -C /usr/local/bin/aws_completer aws' >> ~/.zshrc
source ~/.zshrc

L'autoprompt suggère les commandes et options en temps réel :

Fenêtre de terminal
# Activer ponctuellement
aws ec2 --cli-auto-prompt
# Activer par défaut
export AWS_CLI_AUTO_PROMPT=on

Utilisez les flèches pour naviguer, Tab pour compléter, F3 pour la doc.

FormatUsageExemple
jsonScripts, parsing avec jq--output json
tableLecture humaine--output table
textScripts shell simples--output text
yamlLisibilité, configs--output yaml
Fenêtre de terminal
# Comparer les formats
aws ec2 describe-regions --output json
aws ec2 describe-regions --output table
aws ec2 describe-regions --query 'Regions[].RegionName' --output text

À garder sous la main : les commandes de vérification, de configuration, de listing et de filtrage les plus utilisées au quotidien.

SyntaxeDescription
aws --versionVérifier l'installation
aws sts get-caller-identitySavoir sur quel compte on est connecté
aws configure listVoir quelle configuration est active
SyntaxeDescription
aws configureLancer l'assistant de configuration
aws configure --profile NOMCréer un nouveau profil
aws configure list-profilesLister tous les profils
SyntaxeDescription
aws s3 lsLister les buckets S3
aws s3 ls s3://BUCKET --recursiveExplorer le contenu d'un bucket
aws ec2 describe-instances --output tableLister les instances EC2
aws ec2 describe-regions --output tableLister les régions AWS
SyntaxeDescription
--filters 'Name=X,Values=Y'Filtrer côté serveur (rapide)
--query 'Expression'Filtrer côté client avec JMESPath
--output tableSortie en tableau lisible
--profile NOMUtiliser un profil spécifique
export AWS_PROFILE=NOMDéfinir le profil par défaut de la session

Annexe : endpoints personnalisés (clouds compatibles)

Section intitulée « Annexe : endpoints personnalisés (clouds compatibles) »

AWS CLI fonctionne avec tout service compatible S3/EC2 :

Fenêtre de terminal
# S3 vers MinIO local
aws s3 ls --endpoint-url http://localhost:9000
# S3 vers Outscale
aws s3 ls --endpoint-url https://oos.eu-west-2.outscale.com --profile outscale

Configuration permanente dans ~/.aws/config :

~/.aws/config
[profile outscale-s3]
region = eu-west-2
output = json
services = outscale-services
[services outscale-services]
s3 =
endpoint_url = https://oos.eu-west-2.outscale.com
ec2 =
endpoint_url = https://fcu.eu-west-2.outscale.com
Service OutscaleEndpoint
S3 (OOS)https://oos.{region}.outscale.com
EC2 (FCU)https://fcu.{region}.outscale.com

Créez des raccourcis dans ~/.aws/cli/alias :

~/.aws/cli/alias
[toplevel]
whoami = sts get-caller-identity
ls-buckets = s3 ls
ls-instances = ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType]' --output table

Utilisation :

Fenêtre de terminal
aws whoami
aws ls-buckets
aws ls-instances
~/.aws/cli/alias
[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
}; f

Pour diagnostiquer les erreurs d'authentification :

Fenêtre de terminal
aws sts get-caller-identity --debug 2>&1 | head -50

Certaines commandes EC2 supportent --dry-run :

Fenêtre de terminal
aws ec2 run-instances --dry-run --image-id ami-xxx --instance-type t3.micro

Pour les gros listings :

Fenêtre de terminal
# Désactiver la pagination automatique
aws ec2 describe-instances --no-paginate
# Limiter le nombre de résultats
aws iam list-users --max-items 100

Pour les commandes complexes :

Fenêtre de terminal
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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn