Les 10 commandes AWS CLI essentielles pour la gestion quotidienne des ressources

Gardez cette antisèche AWS CLI à portée de main pour les vérifications quotidiennes S3, EC2 et IAM, les transferts, les actions sur les instances et les révisions des autorisations.

Les 10 commandes AWS CLI essentielles pour la gestion quotidienne des ressources

L'AWS CLI est souvent le moyen le plus rapide de répondre aux questions opérationnelles quotidiennes : quelles instances EC2 sont en cours d'exécution, qu'est-ce qui a changé dans un préfixe S3, ou quelles politiques sont attachées à un utilisateur. La console est utile, mais la CLI vous offre des commandes reproductibles que vous pouvez coller dans un runbook ou un script.

Cette antisèche AWS CLI se concentre sur les commandes pratiques S3, EC2 et IAM que vous êtes susceptible d'utiliser lors des vérifications de routine et du dépannage.

Prérequis

Avant de commencer, assurez-vous d'avoir installé et configuré l'AWS CLI sur votre système. Si ce n'est pas le cas, suivez la documentation officielle AWS pour l'installer et configurer vos identifiants (ID de clé d'accès, clé d'accès secrète et région par défaut).

# Vérifier la version de l'AWS CLI
aws --version

# Configurer l'AWS CLI si vous ne l'avez pas déjà fait
aws configure

Commandes AWS CLI essentielles pour Amazon S3

Utilisez ces commandes pour inspecter les buckets, déplacer des objets et prévisualiser les modifications avant un transfert.

1. aws s3 ls - Lister les buckets et objets S3

Cette commande vous permet de lister vos buckets S3 ou les objets dans un bucket spécifique. C'est souvent la première étape pour comprendre votre paysage de stockage.

Objectif : Afficher les buckets S3 ou le contenu d'un bucket.

Exemple :

# Lister tous les buckets S3 de votre compte
aws s3 ls

# Lister les objets dans un bucket spécifique
aws s3 ls s3://nom-de-votre-bucket/

# Lister les objets de manière récursive avec des tailles et dates lisibles
aws s3 ls s3://nom-de-votre-bucket/ --recursive --human-readable --summarize

Conseils :

  • Utilisez --recursive pour lister tous les objets sous un préfixe. S3 a des préfixes, pas de vrais dossiers, bien que la CLI les présente de manière similaire à des dossiers. --summarize fournit un nombre total et une taille.
  • Vous pouvez également spécifier un chemin dans un bucket : aws s3 ls s3://nom-de-votre-bucket/prefixe/.

2. aws s3 cp - Copier des fichiers vers et depuis S3

La commande cp est fondamentale pour transférer des fichiers entre votre système de fichiers local et S3, ou même entre des buckets S3.

Objectif : Copier des fichiers locaux vers S3, des objets S3 vers le local, ou des objets S3 entre buckets.

Exemple :

# Copier un fichier local vers un bucket S3
aws s3 cp fichier-local.txt s3://nom-de-votre-bucket/dossier/fichier-distant.txt

# Copier un objet de S3 vers votre machine locale
aws s3 cp s3://nom-de-votre-bucket/dossier/fichier-distant.txt copie-locale.txt

# Copier un objet d'un bucket S3 à un autre
aws s3 cp s3://bucket-source/fichier.txt s3://bucket-destination/nouveau-fichier.txt

# Copier un répertoire local vers S3 de manière récursive
aws s3 cp --recursive dossier-local/ s3://nom-de-votre-bucket/dossier-distant/

Conseils :

  • --recursive est crucial pour copier des répertoires entiers.
  • Utilisez --exclude et --include pour filtrer les fichiers lors des copies récursives.

3. aws s3 sync - Synchroniser les répertoires locaux avec S3

sync est une commande puissante qui synchronise le contenu d'un répertoire avec un préfixe S3, ou vice versa. Elle ne copie que les fichiers nouveaux ou modifiés, ce qui la rend très efficace pour les sauvegardes et les déploiements.

Objectif : Synchroniser efficacement un répertoire local avec un bucket/préfixe S3.

Exemple :

# Synchroniser un répertoire local avec un bucket S3
aws s3 sync dossier-local/ s3://nom-de-votre-bucket/chemin-distant/

# Synchroniser un bucket S3 avec un répertoire local
aws s3 sync s3://nom-de-votre-bucket/chemin-distant/ dossier-local/

# Simulation pour voir les modifications sans les effectuer
aws s3 sync dossier-local/ s3://nom-de-votre-bucket/chemin-distant/ --dryrun

Meilleure pratique : Utilisez toujours --dryrun d'abord pour prévisualiser les modifications avant d'exécuter une opération sync, surtout pour les données critiques.

4. aws s3 rm - Supprimer des objets et buckets S3

Cette commande est utilisée pour supprimer des objets d'un bucket S3 ou pour supprimer un bucket vide.

Objectif : Supprimer des objets ou des buckets vides de S3.

Exemple :

# Supprimer un seul objet d'un bucket
aws s3 rm s3://nom-de-votre-bucket/chemin/vers/objet.txt

# Supprimer tous les objets dans un dossier (préfixe) de manière récursive
aws s3 rm s3://nom-de-votre-bucket/dossier/ --recursive

# Supprimer un bucket vide
aws s3 rb s3://nom-de-votre-bucket/

# Supprimer de force un bucket et tout son contenu (À UTILISER AVEC EXTRÊME PRUDENCE !)
aws s3 rb s3://nom-de-votre-bucket/ --force

Avertissement : aws s3 rb --force est destructeur. Il supprime les objets avant de supprimer le bucket, mais les buckets versionnés peuvent encore nécessiter un nettoyage des versions avec des commandes API S3 de niveau inférieur avant la suppression.

Commandes AWS CLI essentielles pour Amazon EC2 (Elastic Compute Cloud)

EC2 fournit une capacité de calcul évolutive dans le cloud AWS. Ces commandes vous aident à gérer vos serveurs virtuels.

5. aws ec2 describe-instances - Obtenir les détails des instances EC2

C'est votre commande de référence pour recueillir des informations sur vos instances EC2, y compris leur état, leurs adresses IP publiques/privées, leurs balises, etc.

Objectif : Récupérer des informations détaillées sur une ou plusieurs instances EC2.

Exemple :

# Décrire toutes les instances EC2 dans la région actuelle
aws ec2 describe-instances

# Décrire les instances avec une balise spécifique (par exemple, Environment=Production)
aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=Production"

# Décrire les instances par ID d'instance
aws ec2 describe-instances --instance-ids i-0abcdef1234567890

# Décrire les instances et filtrer pour des informations spécifiques en utilisant JMESPath (par exemple, PublicIpAddress)
aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \
    --output table

Conseils :

  • --filters est puissant pour affiner les résultats en fonction de l'état de l'instance, des balises, des types d'instance, etc.
  • --query vous permet d'extraire des champs de données spécifiques et de reformater la sortie (par exemple, en utilisant des expressions JMESPath).

6. aws ec2 start-instances - Démarrer des instances EC2 arrêtées

Utilisez cette commande pour démarrer une ou plusieurs instances EC2 arrêtées. Les instances conservent généralement leurs adresses IPv4 privées, mais les adresses IPv4 publiques peuvent changer à moins que vous n'utilisiez une adresse IP élastique.

Objectif : Lancer le processus de démarrage pour les instances EC2 arrêtées.

Exemple :

# Démarrer une seule instance EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890

# Démarrer plusieurs instances EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

7. aws ec2 stop-instances - Arrêter des instances EC2 en cours d'exécution

Cette commande arrête les instances EC2 en cours d'exécution. Pour la plupart des instances basées sur EBS, la facturation à l'heure d'instance s'arrête lorsque l'instance est arrêtée, mais les volumes EBS attachés, les adresses IP élastiques, les instantanés et certaines ressources connexes peuvent toujours entraîner des frais.

Objectif : Arrêter les instances EC2 en cours d'exécution.

Exemple :

# Arrêter une seule instance EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890

# Arrêter plusieurs instances EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

# Forcer l'arrêt d'une instance (à utiliser avec prudence pour les systèmes de production)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force

Avertissement : Forcer l'arrêt d'une instance peut entraîner une perte de données ou une corruption du système de fichiers si les applications ne sont pas arrêtées correctement.

8. aws ec2 terminate-instances - Terminer des instances EC2

La terminaison d'une instance supprime définitivement l'instance. Les volumes EBS attachés sont supprimés uniquement si leur paramètre DeleteOnTermination est activé.

Objectif : Supprimer définitivement des instances EC2.

Exemple :

# Terminer une seule instance EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

# Terminer plusieurs instances EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

Avertissement : La terminaison est une action permanente et irréversible. Assurez-vous d'avoir des sauvegardes ou des instantanés des données critiques avant de terminer des instances.

Commandes AWS CLI essentielles pour IAM (Identity and Access Management)

IAM vous permet de contrôler de manière sécurisée l'accès aux services et ressources AWS. Ces commandes aident à gérer les utilisateurs et leurs autorisations.

9. aws iam list-users - Lister les utilisateurs IAM

Cette commande fournit une liste de tous les utilisateurs IAM de votre compte AWS, ainsi que leurs ARN, dates de création et ID d'utilisateur.

Objectif : Afficher tous les utilisateurs IAM configurés dans votre compte AWS.

Exemple :

# Lister tous les utilisateurs IAM
aws iam list-users

# Lister les utilisateurs et extraire des champs spécifiques en utilisant JMESPath
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table

Meilleure pratique : Examinez régulièrement votre liste d'utilisateurs IAM pour vous assurer que seuls les utilisateurs nécessaires existent et que les anciens comptes inutilisés sont supprimés.

10. aws iam list-attached-user-policies - Lister les politiques attachées à un utilisateur IAM

Comprendre les autorisations d'un utilisateur IAM est essentiel pour la sécurité et le dépannage des problèmes d'accès. Cette commande liste les politiques gérées directement attachées à un utilisateur spécifique.

Objectif : Afficher les politiques gérées attachées à un utilisateur IAM.

Exemple :

# Lister toutes les politiques gérées attachées à un utilisateur IAM spécifique
aws iam list-attached-user-policies --user-name NomUtilisateurIAM

# Lister les politiques en ligne attachées à un utilisateur IAM spécifique
aws iam list-user-policies --user-name NomUtilisateurIAM

Conseils :

  • N'oubliez pas que les utilisateurs IAM peuvent recevoir des autorisations provenant de politiques gérées attachées, de politiques en ligne et d'appartenance à des groupes. Les rôles sont des identités IAM distinctes ; les utilisateurs n'héritent pas des autorisations de rôle à moins qu'ils ne soient autorisés à assumer un rôle.
  • Pour obtenir les détails d'une politique spécifique, utilisez aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess puis aws iam get-policy-version.

À retenir

Commencez par des commandes en lecture seule telles que aws s3 ls, aws ec2 describe-instances et aws iam list-users. Ajoutez des actions d'écriture comme sync, stop-instances et terminate-instances uniquement après avoir confirmé le compte, la région, le profil et les ID de ressources cibles.