Aller au contenu
Cloud medium

AWS CLI : premiers pas et commandes essentielles

32 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)

Les cinq étapes ci-dessous suffisent à valider une installation complète. Elles suivent un ordre qui n'est pas anodin : on vérifie son identité avant de lister quoi que ce soit, parce qu'une commande lancée sur le mauvais compte donne des résultats vides sans jamais afficher d'erreur. Chacune de ces étapes est détaillée dans les sections suivantes.

  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

AWS CLI v2 est la version maintenue : elle est distribuée sous forme de paquet autonome, qui embarque son propre interpréteur Python. Vous n'avez donc aucune dépendance Python à installer, et la v1 installée via pip sur d'anciens postes n'est pas concernée par les commandes de ce guide. Choisissez l'onglet correspondant à votre système.

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

AWS CLI ne stocke pas de mot de passe : il signe chaque requête avec des identifiants. Deux chemins existent pour les obtenir. Les clés d'accès sont un couple de chaînes qui ne périment pas, simples à mettre en place mais dangereuses à laisser traîner. Le SSO délivre à la place des identifiants temporaires, renouvelés à chaque connexion ; c'est la méthode retenue dans la plupart des entreprises.

L'assistant aws configure écrit les réponses dans ~/.aws/credentials et ~/.aws/config. Il ne teste rien : une clé mal recopiée ne se manifestera qu'à la première commande.

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

Ces trois vérifications prennent dix secondes et se lisent dans l'ordre : qui, quelle configuration, quelle surcharge. La troisième est la plus souvent oubliée : une variable d'environnement exportée dans un terminal resté ouvert prend le pas sur tout le reste, y compris sur un --profile explicite.

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

L'aide intégrée suit la même hiérarchie que les commandes : au niveau du service, elle liste les actions disponibles ; au niveau de l'action, elle détaille chaque paramètre. Elle s'affiche dans un pager, que l'on quitte avec q.

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, lambdaOui
ActionQue faire sur ce service ?ls, describe-instances, create-bucketOui
Options/ParamètresComment filtrer ou formater ?--output table, --region eu-west-3, --filtersNon (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

Les options ci-dessous s'écrivent après n'importe quelle commande, quel que soit le service. Elles se répartissent en deux familles : celles qui décident et avec quels droits la requête part (--profile, --region), et celles qui décident ce qui s'affiche en retour (--output, --query, --filters). Une option passée en ligne de commande écrase toujours la valeur équivalente de ~/.aws/config.

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 la même commande enrichie progressivement, de la forme la plus courte à la plus outillée. Le but n'est pas de retenir ces lignes par cœur mais de repérer où se greffe chaque élément : les paramètres suivent l'action, les options globales se placent n'importe où après elle.

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.

--output table seul reste illisible sur une réponse EC2 : le tableau contient alors des dizaines de colonnes. C'est la combinaison avec --query, qui sélectionne les champs à garder, qui rend la sortie exploitable.

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"

--query s'apprend par empilement. On extrait d'abord un champ, puis plusieurs, puis on ajoute une condition entre crochets. Notez les accents graves autour de running dans le troisième exemple : JMESPath exige ce guillemet particulier pour une valeur littérale, et une simple apostrophe renverrait une liste vide sans message d'erreur.

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. Un profil est un jeu d'identifiants et de réglages nommé : région, format de sortie, clés ou configuration SSO. Sans profil, tout atterrit dans default, et il devient impossible de savoir sur quel compte on travaille sans lancer une commande. Avec des profils explicites, le nom du compte apparaît dans chaque ligne de commande de votre historique.

L'assistant repose les mêmes questions et écrit les réponses dans une section dédiée des fichiers de configuration, sans toucher au profil default.

Fenêtre de terminal
aws configure --profile production

Le flag --profile s'ajoute à n'importe quelle commande et ne vaut que pour celle-ci.

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"

Cette commande lit les deux fichiers de configuration et renvoie un nom par ligne. Utile pour retrouver l'orthographe exacte d'un profil avant de le passer à --profile.

Fenêtre de terminal
aws configure list-profiles

Deux fichiers se partagent le travail dans ~/.aws/. credentials contient les secrets, config contient les réglages non sensibles. Attention à la syntaxe des sections : dans credentials le profil s'écrit [production], alors que dans config il faut le préfixe profile, soit [profile production]. Oublier ce préfixe est la cause la plus fréquente d'un profil « introuvable ».

~/.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 : une facture salée ou un incident de production.

C'est le piège le plus coûteux, et rien dans la commande ne signale le problème : terminate-instances s'exécute sans confirmation et l'arrêt est définitif.

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

La plupart des services AWS sont régionaux : la même commande interroge une région à la fois. Une réponse vide ne veut donc pas dire « aucune ressource », mais souvent « aucune ressource dans cette région ».

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

Trois réglages font gagner un temps réel sur des dizaines de commandes par jour. Ils portent sur la lecture des sorties, la complétion et l'aide interactive. Aucun n'est nécessaire pour utiliser AWS CLI, mais leur absence se paye en frappes inutiles et en aller-retours vers la documentation.

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=""

Rappel condensé de la procédure détaillée plus haut : la complétion repose sur le binaire aws_completer, dont le chemin doit être absolu dans la ligne complete. Sous Zsh, bashcompinit doit être chargé avant, sinon la commande complete n'existe pas.

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.

Le format se choisit selon ce qu'on fait de la réponse. json est le défaut et le seul à conserver la structure complète, donc le seul exploitable par jq. text produit des colonnes séparées par des tabulations, pratique pour awk ou une boucle shell, mais il perd les noms de champs. table ne sert qu'à la lecture humaine. Le format s'impose par commande avec --output, ou une fois pour toutes dans ~/.aws/config.

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.

Les trois commandes à lancer quand quelque chose ne se comporte pas comme prévu, avant même de chercher l'erreur dans la commande elle-même.

SyntaxeDescription
aws --versionVérifier l'installation
aws sts get-caller-identitySavoir sur quel compte on est connecté
aws configure listVoir quelle configuration est active

Toutes ces commandes écrivent ou lisent ~/.aws/credentials et ~/.aws/config. Aucune ne contacte AWS : elles ne valident donc pas les identifiants saisis.

SyntaxeDescription
aws configureLancer l'assistant de configuration
aws configure --profile NOMCréer un nouveau profil
aws configure list-profilesLister tous les profils

Les commandes de lecture pure : elles ne modifient rien et peuvent être lancées sans risque pour explorer un compte inconnu. Notez que aws s3 ls liste les buckets de tout le compte, alors que les commandes EC2 restent limitées à la région active.

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

Ces options se combinent librement. Retenez la différence de moment : --filters réduit ce qu'AWS envoie, --query réduit ce que votre terminal affiche une fois la réponse complète reçue.

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 n'est pas réservé à AWS. Il sait s'adresser à n'importe quel service qui implémente les mêmes API, ce qui en fait un outil utilisable sur un stockage local ou chez un hébergeur européen sans changer d'habitudes.

Plusieurs fournisseurs exposent des API compatibles avec celles d'AWS. L'option --endpoint-url remplace l'adresse contactée sans rien changer à la syntaxe des commandes, ce qui permet de réutiliser vos automatisations telles quelles. La configuration reste incomplète tant que la région et les identifiants du profil correspondent au fournisseur visé, pas à AWS.

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

AWS CLI dispose de son propre mécanisme d'alias, indépendant de ceux du shell. Ils vivent dans le fichier ~/.aws/cli/alias, qui n'existe pas par défaut : il faut le créer. L'avantage sur un alias shell est qu'ils fonctionnent quel que soit le terminal utilisé et se partagent facilement au sein d'une équipe.

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

Un alias préfixé par ! exécute une commande shell au lieu d'une commande AWS. La construction !f() { ... }; f déclare une fonction puis l'appelle immédiatement, ce qui permet de récupérer les arguments passés par l'utilisateur : ${1} est le premier d'entre eux. Le second exemple ouvre le port 22 d'un groupe de sécurité à votre adresse IP publique du moment ; c'est une modification de règle de pare-feu, pensez à la retirer ensuite avec revoke-security-group-ingress.

~/.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

Quatre options qui ne servent pas tous les jours mais débloquent des situations précises : comprendre un refus d'authentification, tester une commande destructrice sans l'exécuter, maîtriser le volume des réponses et construire une commande à trop de paramètres pour tenir sur une ligne.

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
  • Toute commande suit le schéma aws <service> <action> [options], avec une sortie JSON par défaut.
  • Lancez aws sts get-caller-identity avant toute commande destructrice : c'est le whoami AWS qui évite « j'ai supprimé la prod ».
  • Jamais de clés dans Git : utilisez ~/.aws/credentials, des variables d'environnement, ou le SSO en entreprise.
  • Jonglez entre comptes avec --profile ou AWS_PROFILE ; attention, la variable d'environnement a priorité sur le flag.
  • Filtrez avec --filters (côté serveur, rapide), --query (JMESPath, côté client) et --output table pour lire.
  • Précisez toujours la région ; explorez un service inconnu avec help, --cli-auto-prompt et --generate-cli-skeleton.

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn