Accéder au contenu principal

Comment utiliser AWS CLI : Un guide pour les débutants

Apprenez à installer le CLI AWS sur votre système, à le configurer pour qu'il fonctionne avec votre compte AWS et à exécuter des commandes pour interagir avec divers services AWS !
Actualisé 29 janv. 2025  · 30 min de lecture

AWS est un fournisseur de services cloud qui propose une large gamme de services évolutifs et à la demande, notamment de la puissance de calcul, du stockage, des bases de données, de l'apprentissage automatique, des réseaux, de l'analytique, et bien plus encore, à partir de ses centres de données dans le monde entier. Consultez les cours Introduction à AWS et Technologie et services de cloud AWS pour en savoir plus !

Pour interagir avec les ressources sur AWS et les configurer, nous pouvons utiliser la console de gestion AWS ou la CLI AWS.

Dans ce tutoriel, nous allons vous aider à installer le CLI AWS à partir de zéro, à le configurer pour qu'il communique avec votre compte AWS et à créer quelques ressources de base à l'aide du CLI.

Qu'est-ce que l'interface de programmation AWS ?

Le CLI AWS est un outil puissant qui permet aux utilisateurs d'interagir avec les services AWS directement à partir de la ligne de commande de leur ordinateur. Les commandes CLI AWS offrent des fonctionnalités équivalentes à celles de la console de gestion AWS.

Par exemple, pour répertorier tous les groupes de sécurité dans une région AWS spécifique, vous devez vous rendre dans la section "Security Groups" du service EC2 via la console.

Afficher les groupes de sécurité à partir de la console AWS

Affichez les groupes de sécurité dans la console AWS.

Vous pouvez également obtenir le même résultat en utilisant la commande aws ec2 describe-security-groups dans la CLI AWS.

Commande CLI AWS pour décrire et obtenir des informations sur les groupes de sécurité

Affichez les groupes de sécurité via AWS CLI à partir du terminal local.

Installation de l'interface de programmation AWS

Nous allons voir comment installer AWS CLI sur Windows, Mac et Linux. 

Il existe deux versions principales d'AWS CLI, la version 1 et la version 2. Nous ne parlerons que de la version 2, car il s'agit de la version la plus récente, qui offre davantage de fonctionnalités. Pour obtenir les dernières informations sur l'installation ou la mise à jour de la dernière version de l'AWS CLI, consultez la documentation AWS.

Installation sous Windows

Téléchargez le programme d'installation depuis le site officiel d'AWS. Ouvrez lepaquet d'installation Windows "AWSCLIV2" et vous serez accueilli par la fenêtre ci-dessous.

Assistant de configuration de l'interface de programmation AWS

Assistant de configuration AWS CLI.

Sélectionnez "Suivant" et continuez à accepter le contrat de licence. 

Accord de licence AWS CLI

Accord de licence AWS CLI.

Confirmez l'emplacement de l'installation et procédez à l'installation. L'installation proprement dite ne devrait pas prendre plus de 5 minutes.

Confirmez l'emplacement d'installation de AWS CLI

Confirmez l'emplacement de l'installation.

Installation de la CLI AWS en cours

Installation en cours.

L'installation de AWS CLI est terminée

L'installation est terminée.

Pour vérifier que l'installation a réussi, ouvrez le terminal et exécutez la commande aws --version. Il devrait ressembler à la sortie ci-dessous.

Vérifiez l'installation d'AWS CLI sous Windows

Vérifiez l'installation d'AWS CLI sur Windows.

Installation sur macOS

Nous pouvons installer l'AWS CLI sur MacOS via Homebrew ou l'installateur de paquets. Je couvrirai les deux méthodes d'installation.

Installation du paquet

Téléchargez le programme d'installation .pkg depuis le site officiel d'AWS. Ouvrez le fichier AWSCLIV2.pkg, et vous serez accueilli par la fenêtre ci-dessous.

Installation du package AWS CLI sur MacOS

Installation de la CLI AWS.

Acceptez la licence, confirmez l'emplacement d'installation et procédez à l'installation.

Message d'installation réussie de l'AWS CLI

Message d'installation réussie.

Pour vérifier que l'installation a réussi, ouvrez le terminal et exécutez la commande aws --version. Il devrait ressembler à la sortie ci-dessous.

Vérifiez l'installation d'AWS CLI sur MacOS

Vérifiez l'installation d'AWS CLI sur MacOS.

Homebrew

Assurez-vous que Homebrew est installé localement. Pour vérifier, exécutez brew --version. Sinon, vous pouvez vous référer à la page officielle de Homebrew pour les instructions d'installation.

Ensuite, exécutez les commandes suivantes pour installer le CLI :

# With brew installed, update Homebrew's formulae and cask definitions
brew update

# Install AWS CLI
brew install awscli

# Verify the installation
aws --version

Capture d'écran du terminal des commandes de brassage

brew update and install

Vérifiez l'installation de l'interface de programmation AWS via brew

Vérifiez l'installation du brassage.

Installation sous Linux

Pour démontrer l'installation sur Linux, j'ai démarré un Amazon Linux EC2 avec l'AMI ami-0bd55ebedabddc3c0. Bien que la version 2 de l'AWS CLI soit installée par défaut, il ne s'agit pas de la dernière version mineure. Les étapes de la mise à jour et de l'installation sont similaires.

# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli

# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Unzip the file
unzip awscliv2.zip

# Run the installer
./aws/install

# Verify AWS CLI 
aws --version

Téléchargez et décompressez le programme d'installation sous Linux

Téléchargez et décompressez le programme d'installation.

Exécutez le programme d'installation et vérifiez l'installation sous Linux

Exécutez le programme d'installation et vérifiez l'installation.

Configuration de la CLI AWS

Après avoir installé AWS CLI, nous devons le configurer avant de l'utiliser pour interagir avec nos ressources AWS. La configuration comprend la mise en place des informations d'identification AWS et de certains paramètres par défaut facultatifs.

Lorsque nous nous connectons à la console AWS, nous nous connectons soit en tant qu'utilisateur, soit en tant que rôle. De même, lorsque nous utilisons AWS CLI pour interagir avec nos ressources, nous devons le faire en tant qu'utilisateur ou assumer un rôle.

Configuration des identifiants AWS

Il existe deux façons de se connecter à la console AWS. La première consiste à utiliser un utilisateur créé via le service de gestion des identités et des accès (IAM).

Interface utilisateur pour la connexion des utilisateurs IAM

Page de connexion de l'utilisateur IAM.

La seconde consiste à utiliser un utilisateur créé via le service IAM Identity Center.

Interface utilisateur pour la connexion des utilisateurs du centre d'identité IAM

Page de connexion au portail d'accès AWS.

Pour configurer AWS CLI, vous devez définir les adresses aws_access_key_id et aws_secret_access_key sur votre ordinateur local. Cette paire de clés identifie votre compte et vous donne accès à AWS. Selon la façon dont vous vous connectez, l'obtention de ces informations diffère légèrement. 

Utilisateur IAM

Pour utiliser la CLI AWS en tant qu'utilisateur d'IAM, accédez au service IAM via la console AWS, sélectionnez un utilisateur existant ou créez-en un nouveau. J'utiliserai un utilisateur existant.

Utilisateurs du service IAM

Utilisateur IAM.

Sélectionnez l'utilisateur et accédez à l'onglet "Security Credentials". Faites défiler vers le bas pour voir les "clés d'accès". Pour ce tutoriel, je vais créer une autre clé d'accès. Sélectionnez "Créer une clé d'accès".

Onglet "Security credentials" d'un utilisateur IAM

Onglet "Security credentials" d'un utilisateur IAM.

Sélectionnez "Command Line Interface (CLI)". 

Création d'une clé d'accès pour un utilisateur IAM

Créez une clé d'accès.

Confirmez et créez.

Clé d'accès créée

Clé d'accès créée.

Téléchargez le fichier .csv pour le conserver. Ensuite, exécutez la commande aws configure localement et saisissez la valeur de la clé d'accès et de la clé d'accès secrète. Nous écrivons cet ensemble d'informations d'identification dans le profil "par défaut", car nous n'avons pas spécifié de profil avec l'option --profile. Nous aborderons la question des profils dans une section ultérieure.

"Commande CLI "aws configure

Commande AWS configure.

Un dossier caché appelé ".aws" sera créé dans votre répertoire personnel (~). 

Dossier ".aws" dans le répertoire personnel

Le dossier .aws.

Il contient deux fichiers, config et credentials

Contenu du dossier .aws

Contenu du dossier .aws.

Le fichier config stocke la région et l'option de sortie par défaut que vous avez saisies ci-dessus. Le fichier credentials contient quant à lui les fichiers aws_access_key_id et aws_secret_access_key. Pour visualiser leur contenu, vous pouvez exécuter les commandes cat config et cat credentials.

Exécutez la commande aws sts get-caller-identity pour vérifier que les informations d'identification fonctionnent et que l'identité IAM correcte est renvoyée.

Commande CLI AWS pour valider les informations d'identification

Validez les informations d'identification.

Utilisateur du centre d'identité IAM

Après vous être connecté, vous serez dirigé vers le portail d'accès AWS pour sélectionner le compte AWS et le rôle à assumer lors de la connexion à la console. Sélectionnez "Access keys" (clés d'accès) pour le compte et le rôle que vous souhaitez utiliser pour la CLI AWS.

Portail d'accès AWS

Portail d'accès AWS.

Une fenêtre identique à la capture d'écran ci-dessous apparaît. Choisissez l'option 2, copiez et collez le texte fourni dans votre fichier d'informations d'identification AWS.

Obtenir les informations d'identification d'un utilisateur via le portail d'accès AWS

Les informations d'identification du portail d'accès AWS.

Remarquez qu'en plus des aws_access_key_id et aws_secret_access_key, il y a un aws_session_token comparé aux informations d'identification d'un utilisateur IAM dont il a été question dans la section précédente. Cela ajoute une couche de sécurité supplémentaire aux informations d'identification de l'utilisateur créées via le centre d'identité IAM, car le jeton de session expirera et l'utilisateur devra s'authentifier à nouveau pour rafraîchir le jeton.

Après avoir collé le texte de l'option 2 dans votre fichier d'informations d'identification AWS :

# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>

# Valid that the credentials work
aws sts get-caller-identity

Informations d'identification valides provenant du portail d'accès AWS

Validez les informations d'identification.

Le jeton de session finira par expirer et nous devrons en générer un nouveau. 

Message d'erreur dû à l'expiration du jeton

Jeton expiré.

Au lieu de le copier à nouveau à partir du portail d'accès comme nous l'avons fait ci-dessus, nous pouvons exécuter le site aws sso login à partir de notre ordinateur local. Suivez les commandes ci-dessous pour configurer les paramètres d'authentification unique (SSO) sur votre ordinateur local.

# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso

Sortie de la commande "aws configure sso".

Commande AWS configure SSO.

Vous serez invité à vous connecter.

Autoriser l'accès par AWS CLI

Accordez l'accès à l'interface CLI d'AWS.

Permission accordée à AWS CLI

Demande de CLI AWS approuvée.

Lorsque votre jeton de session expire à nouveau, exécutez simplement aws sso login.

Sortie de la commande "aws sso login".

Sortie de la connexion AWS SSO.

Options de configuration

Nous pouvons personnaliser plusieurs configurations comme les options par défaut pour répondre à nos préférences. Si elles ne sont pas explicitement spécifiées, ces configurations par défaut s'appliquent à la commande CLI AWS.

Pour mettre à jour ou ajouter des valeurs de configuration dans le fichier config, vous pouvez exécuter la commande ci-dessous ou le modifier manuellement via vim ou nano.

aws configure set <setting> <value>

région

Les ressources AWS qui résident dans une région doivent être spécifiées à l'adresse region lors de l'exécution des commandes AWS CLI. 

Si l'option "--region <nom de la région>" n'est pas spécifiée dans la commande, la région par défaut indiquée dans le fichier de configuration sera utilisée. Si aucune région par défaut n'est définie, vous rencontrerez l'erreur suivante.

Message d'erreur lorsqu'aucune région par défaut n'est spécifiée

Erreur si aucune région n'est spécifiée.

sortie

Le paramètre output configure le format de sortie renvoyé par la commande CLI AWS. 

Par exemple, le format de sortie par défaut que nous avons configuré ci-dessus est "JSON", et la commande aws sts get-caller-identity renvoie la sortie au format JSON. Les autres options valables sont "tableau" et "texte". 

Voici à quoi ressemble le tableau. J'ai ajouté le drapeau --output table pour écraser la valeur de sortie par défaut "JSON".

Format de sortie des tableaux

aws sts get-caller-identity --output tableau.

role_arn & source_profile

Si vous ne souhaitez pas utiliser directement votre utilisateur IAM et que vous voulez qu'il assume un rôle à la place, spécifiez les configurations role_arn et source_profile

aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>

# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>

Après les avoir spécifiés, vérifiez que le rôle IAM est bien assumé.

Valider les informations d'identification d'un utilisateur IAM assumant un rôle

Validez les informations d'identification.

cli_pager

Par défaut, l'interface de programmation AWS achemine sa sortie à travers un pager comme less, qui nécessite d'appuyer sur q pour sortir. Nous pouvons modifier ce comportement en désactivant le pager pour configurer la sortie afin qu'elle s'affiche directement dans le terminal en exécutant :

aws configure set cli_pager ""

Sortie avec cli_pager désactivé

Sortie avec cli_pager désactivé.

cli_history

Pour conserver un enregistrement des commandes CLI AWS qui ont été exécutées, activez le site cli_history en exécutant :

aws configure set cli_history enabled

L'historique sera conservé dans une base de données SQLite située à l'adresse ~/.aws/cli/history

# View your AWS CLI history
aws history list

# Show details of a specific command
aws history show <command-id>

Résumé de la configuration

Résumé des options de configuration standard :

Clé de configuration

Description

région

Région AWS par défaut (par exemple, us-east-1, ap-southeast-1).

sortie

Format de sortie : json, texte ou tableau.

role_arn

ARN du rôle IAM à assumer.

source_profile

Profil à utiliser comme source lors de l'endossement d'un rôle.

cli_pager

Sortie de commande du pager (par exemple, moins, ou "" pour désactiver).

cli_history

Activez ou désactivez le fichier historique de la CLI (activé ou désactivé).

cli_timestamp_format

Personnalisez le format de l'horodatage (none, iso8601, iso8601_ms).

Si vous avez suivi les exemples ci-dessus, voici à quoi devrait ressembler votre fichier ~/.aws/config.

Contenu du fichier ~/.aws/config

Contenu du fichier de configuration.

Comprendre les commandes CLI d'AWS

Toutes les commandes de la CLI AWS ont un format standard :

Décomposition visuelle d'une commande AWS CLI

Format des commandes CLI AWS - image de l'auteur.

L'opération propre à chaque service comportera des options/étiquettes facultatives ou obligatoires à ajouter.

Commandes de base

Notre CLI AWS peut désormais accéder de manière programmatique à notre compte AWS pour interagir avec les services. Essayons quelques commandes de base sur certains services AWS couramment utilisés !

EC2

Description

Commandement

Décrit les instances spécifiées ou toutes les instances.

aws ec2 describe-instances [--instance-ids <valeur>]

Décrire les groupes de sécurité spécifiés ou tous vos groupes de sécurité

aws ec2 describe-security-groups [--group-ids <valeur>]

Crée un instantané d'un volume EBS et le stocke dans Amazon S3.

aws ec2 create-snapshot --volume-id <valeur>

Créer un VPC

aws ec2 create-vpc [--cidr-block <valeur>]

Sortie de la commande AWS CLI décrivant toutes les instances

Résultat de la description de toutes les instances.

Reportez-vous à la documentation officielle d'EC2 pour plus d'informations.

S3

Description

Commandement

Lister tous les buckets S3

aws s3 ls 

Lister les objets d'un panier S3

aws s3 ls s3://<nom-du-bucket> --recursive

Déplace un fichier local ou un objet S3 vers un autre emplacement local ou dans S3

aws s3 mv <LocalPath> <S3Uri> ou <S3Uri> <LocalPath> ou <S3Uri> <S3Uri>.

Supprime un objet dans un panier S3

aws s3 rm <S3Uri>

Exemples de commandes "aws s3

Commandes S3.

Pour plus d'informations, reportez-vous à la documentation officielle de S3.

Notez que pour le service AWS S3, en plus de la commande CLI aws s3 mentionnée ci-dessus, il existe également la commande CLI aws s3api. Les commandes aws s3 sont plutôt génériques, tandis que les commandes aws s3api sont plus granulaires et de niveau inférieur.

Reportez-vous à la documentation officielle de s3api pour plus d'informations.

Lambda

Description

Commandement

Pour lister toutes les fonctions Lambda

aws lambda list-functions

Pour obtenir des informations sur une fonction Lambda

aws lambda get-function --function-name <nom de la fonction>

Invoque une fonction Lambda

aws lambda invoke --function-name <nom de la fonction>

Sortie de la commande AWS CLI permettant d'obtenir des informations sur une fonction Lambda.

Renvoie des informations sur la fonction.

Pour plus d'informations, consultez la documentation officielle de Lambda.

Exemple : Utilisation de la CLI AWS pour la gestion d'EC2

Consultez le blog AWS EC2 Tutorial For Beginners pour vous rafraîchir la mémoire sur les bases d'EC2 ! Il vous aidera à mieux comprendre les commandes suivantes.

# To create an EC2 instance
aws ec2 run-instances \
    --image-id ami-0bd55ebedabddc3c0 \
    --count 1 \
    --instance-type t2.micro

Sortie de la CLI AWS pour la création d'une instance

Résultat de la création d'une instance.

Lancez aws ec2 describe-instances pour afficher les détails de toutes les instances EC2, comme indiqué dans les commandes de base.

Si vous souhaitez exécuter la commande pour interroger une ou plusieurs instances spécifiques, ajoutez le drapeau --instance-ids avec l'identifiant de l'instance. E.g., aws ec2 describe-instances --instance-ids i-00836ea7575852f10.

Résultat de la description d'une instance par le CLI d'AWS

Résultat de la description d'une instance.

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Sortie de la CLI AWS pour l'arrêt d'une instance

Résultat de l'arrêt d'une instance.

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Sortie de la CLI AWS pour le démarrage d'une instance

Résultat du démarrage d'une instance.

# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

Sortie de la CLI AWS pour la fermeture d'une instance

Résultat de l'arrêt d'une instance.

Exemple : Travailler avec des buckets S3

Voici quelques commandes utiles pour exécuter des opérations courantes avec les buckets S3, un élément de base dans AWS !

# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>

# To list out all buckets
aws s3 ls

# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To delete an object from the S3 bucket
aws s3 rm <S3Uri>

# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To list the objects in the bucket
aws s3 ls <S3Uri>

# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68

# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force

Exemple de commandes "aws s3

Sortie des commandes AWS S3.

Fonctionnalités avancées de l'interface de programmation AWS

Maintenant que nous avons pratiqué quelques commandes CLI de base, nous pouvons passer en revue quelques fonctionnalités et cas d'utilisation plus avancés de l'interface.

Automatiser des tâches avec le CLI AWS

Les exemples de CLI AWS que nous avons couverts jusqu'à présent impliquent une commande unique pour obtenir des informations ou effectuer une action sur le service. Voyons des exemples d'assemblage de plusieurs commandes CLI dans un script afin d'automatiser des tâches.

Exemple : Script de lancement automatisé d'une instance EC2

Créez un fichier launch_ec2.sh avec le contenu suivant. 

#!/bin/bash

# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro"       # Replace with the desired instance type
REGION="ap-southeast-1"

# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
  --image-id "$AMI_ID" \
  --instance-type "$INSTANCE_TYPE" \
  --region "$REGION" \
  --query "Instances[0].InstanceId" \
  --output text)

echo "Instance launched with ID: $INSTANCE_ID"

# Add a Name tag to the instance
aws ec2 create-tags \
  --resources "$INSTANCE_ID" \
  --tags Key=Name,Value="$INSTANCE_NAME" \
  --region "$REGION"

echo "Tag added: Name=$INSTANCE_NAME"

# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."

Vous pouvez personnaliser le script pour y inclure d'autres paramètres tels que le nom de la clé (--key-name), l'ID du groupe de sécurité (--security-group-ids), l'ID du sous-réseau (--subnet-id), etc.

# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh

# Run the script
./launch_ec2.sh

Exécutez le script launch_ec2.sh

Lancez le script EC2.

Exemple : Arrêt automatisé de toutes les instances EC2 en cours d'exécution

Créez un fichier stop_ec2.sh avec le contenu suivant :

#!/bin/bash

# Check if a region is provided as an argument
if [ -n "$1" ]; then
  REGION="$1"
else
  # Get the default region from AWS CLI configuration
  REGION=$(aws configure get region)

  if [ -z "$REGION" ]; then
    echo "No region provided, and no default region found in AWS CLI configuration."
    echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
    exit 1
  fi
fi

echo "Using region: $REGION"

# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
  --filters Name=instance-state-name,Values=running \
  --query "Reservations[*].Instances[*].InstanceId" \
  --output text \
  --region "$REGION")

if [ -z "$RUNNING_INSTANCES" ]; then
  echo "No running EC2 instances found in region $REGION."
else
  echo "Stopping the following EC2 instances in region $REGION:"
  echo "$RUNNING_INSTANCES"
  echo "Give it around 1 minute for the instances to be stopped."
  
  # Stop the instances
  aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  # Wait for the instances to stop
  aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh

# Run the script with the default region
./stop_all_ec2.sh

# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1

Exécutez le script stop_all_ec2.sh

Arrêtez le script EC2.

Utiliser le CLI AWS avec JSON et JQ

Les résultats des commandes de l'interface de programmation AWS contiennent un grand nombre d'informations. Dans certains cas, il se peut que nous n'ayons pas besoin de toutes les informations renvoyées et que nous ne voulions qu'un sous-ensemble des résultats. 

Par exemple, dans la section "EC2" sous "Commandes de base" ci-dessus, nous avons vu que la commande aws ec2 describe-instances renvoyait un long résultat JSON. Pour analyser cette sortie et n'obtenir que ce qui est nécessaire, nous pouvons utiliser l'indicateur --query ou la commande jq.

Reportez-vous aux scripts d'automatisation de la section "Automatisation des tâches avec AWS CLI" ci-dessus pour des exemples d'utilisation de l'indicateur --query

Notez que la commande jq ne fonctionne que sur une sortie JSON. Ainsi, configurez la sortie par défaut en "JSON" ou passez le drapeau --output json pour chaque commande.

Vérifiez que jq est installé :

Obtenez la version de jq installée

Vérifiez la version de jq.

# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'

# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'

# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'

Exemple de commandes CLI AWS avec jq

Commandes CLI AWS avec jq.

Utiliser le CLI AWS dans un pipeline CI/CD

Nous pouvons utiliser la CLI AWS dans la configuration de notre pipeline pour automatiser les interactions avec les services AWS, comme le déploiement et la mise à jour de nos ressources AWS lors de l'exécution de notre pipeline CI/CD. 

Pour l'exemple ci-dessous, j'utiliserai le pipeline GitLab pour démontrer le déploiement d'une fonction Lambda.

# .gitlab-ci.yml file configuration
stages:
  - demo-cicd

datacamp_job:
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  stage: demo-cicd
  id_tokens:
    GITLAB_OIDC_TOKEN:
      aud: https://gitlab.com
  variables:
    ROLE_ARN: "arn:aws:iam::717240872783:role/<Name of IAM Role that pipeline will use>"
    AWS_DEFAULT_REGION: "ap-southeast-1"
  script:
    - aws --version
    - >
      export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
      $(aws sts assume-role-with-web-identity
      --role-arn ${ROLE_ARN}
      --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
      --web-identity-token ${GITLAB_OIDC_TOKEN}
      --duration-seconds 3600
      --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
      --output text))

    - aws sts get-caller-identity
    - ls -l
    - aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip

    - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Journaux de travail du pipeline Gitlab utilisant une commande AWS CLI

Journaux de travail du pipeline GitLab.

Vous pouvez modifier la configuration du pipeline pour passer les paramètres avec la commande AWS CLI en tant que variables dans le travail du pipeline au lieu de les coder en dur, comme je l'ai fait dans la capture d'écran ci-dessus.

Ainsi, chaque fois que vous souhaitez créer une fonction Lambda, vous pouvez saisir et livrer les variables avec la configuration de votre pipeline dans le dépôt Git.

Meilleures pratiques pour l'utilisation de l'interface de commande AWS

Comme pour toutes les bonnes pratiques, accordez les autorisations minimales nécessaires à l'exécution de la tâche, que vous utilisiez un utilisateur ou un rôle. 

Examinons d'autres bonnes pratiques spécifiques à la CLI AWS !

Utiliser les rôles AWS IAM pour la sécurité

Les rôles AWS IAM fournissent des identifiants de sécurité temporaires permettant d'accéder aux ressources AWS. Ces informations d'identification font l'objet d'une rotation automatique et sont limitées aux autorisations d'un rôle spécifique, ce qui réduit les risques associés aux clés d'accès à long terme.

La méthode recommandée pour utiliser un rôle est d'utiliser le rôle créé à partir du centre d'identité IAM, comme indiqué dans la section "Centre d'identité IAM" sous "Configuration des informations d'identification AWS" ci-dessus. C'est également l'approche recommandée par l'AWS.

Capture d'écran d'AWS sur l'approche recommandée pour l'accès programmatique

Approche recommandée par AWS. Source de l'image : AWS.

Lorsque l'administrateur du cloud crée votre utilisateur via le centre d'identité IAM, il doit lui attribuer un jeu de permissions

Utilisateurs dans le centre d'identité IAM

Utilisateurs dans le centre d'identité IAM.

Pour chaque ensemble de permissions, AWS crée un rôle IAM.

Jeux de permissions dans le centre d'identité IAM

Jeux de permissions dans le centre d'identité IAM.

Gestion de plusieurs profils

Vous serez probablement amené à gérer plus d'un compte AWS dans votre environnement de travail. Nous utilisons des profils pour configurer plusieurs jeux d'informations d'identification dans les fichiers ~/.aws/credentials et ~/.aws/config.

Dans la section "Configuration des informations d'identification AWS" ci-dessus, nous avons exécuté la commande aws configure sans spécifier le profil via l'indicateur --profile ou la variable d'environnement AWS_PROFILE. Ainsi, les informations d'identification et de configuration sont ajoutées au profil par défaut. Pour ajouter un nouveau profil, vous pouvez exécuter la commande aws configure --profile afin de disposer d'un ensemble distinct d'informations d'identification sous le nouveau profil.

# Create a new profile called “dev”
aws configure --profile dev

# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev

# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity

Nouvelles informations d'identification sous un nouveau profil

Nouvelles informations d'identification sous un nouveau profil.

Maintenez votre CLI AWS à jour

Il est important de mettre à jour notre AWS CLI pour garantir une interaction efficace avec nos services AWS et profiter des dernières fonctionnalités et améliorations.

Si vous avez installé AWS CLI à l'aide du programme d'installation pour Windows et Mac, vous avez dû télécharger un fichier sur votre ordinateur local et l'exécuter. La mise à jour se fera de la même manière : Téléchargez et exécutez la dernière version du programme d'installation. 

Si vous avez installé AWS CLI via brew sur Mac, la mise à jour est aussi simple que d'exécuter brew upgrade awscli. J'ai déjà installé la dernière version ici.

brew upgrade awscli

Sortie de la commande awscli de brew upgrade.

Pour Linux, les étapes sont les mêmes que pour l'installation. Reportez-vous à l'extrait de code dans la section "Installation sous Linux". Suivez les commandes pour télécharger le fichier zip, le décompresser et exécuter le programme d'installation.

Journalisation et dépannage

L'interface de commande AWS est un outil extraordinaire, mais nous pouvons également rencontrer des difficultés lorsque nous l'utilisons. Voyons comment les surmonter. 

Journal de l'historique de la CLI

Il peut arriver que l'on oublie une commande et ses paramètres que l'on a exécutés précédemment ou que l'on veuille afficher la sortie d'une commande qui a été exécutée. L'activation du site cli_history peut répondre à cespréoccupations . Pour plus d'informations, reportez-vous à la section "Options de configuration" ci-dessus.

Erreurs de configuration du CLI

Lorsque vous rencontrez des erreurs de configuration de la CLI AWS, l'exécution de la commande aws configure vous aidera à déterminer si la CLI lit correctement les informations de vos informations d'identification et de votre fichier de configuration.

Erreur de configuration de la CLI AWS

Erreur "Unable to parse config file".

# View configuration for the existing profile
aws configure list

# Verify credentials
aws sts get-caller-identity

# Verify configuration values
aws configure get region
aws configure get role_arn

# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS

Autres erreurs

En de rares occasions, nous pouvons rencontrer une erreur inconnue lors de l'exécution de commandes AWS CLI. Pour déboguer le problème avec l'appel API ou rassembler plus d'informations pour comprendre l'erreur, il peut être utile d'ajouter l'indicateur --debug à la commande.

# Add the “--debug” flag
aws ec2 describe-instances --debug

Commande CLI AWS avec l'indicateur de débogage

Commande CLI d'AWS avec l'indicateur de débogage.

Les informations supplémentaires devraient vous aider à comprendre et à résoudre le problème.

Conclusion

L'AWS CLI est un outil puissant qui vous permet d'interagir efficacement avec les services AWS, d'automatiser les tâches de routine et de gérer facilement les ressources du cloud. Dans ce tutoriel, je vous ai appris à installer, configurer et utiliser la CLI AWS pour effectuer des opérations essentielles sur plusieurs services AWS courants.

Que vous soyez un débutant en matière de cloud ou un professionnel DevOps chevronné, la maîtrise de l'AWS CLI peut considérablement améliorer votre productivité. De la création et de la gestion des ressources à l'automatisation des déploiements, les possibilités sont pratiquement infinies avec le CLI AWS dans votre boîte à outils.

Prenez le temps d'expérimenter les commandes, d'explorer les capacités de script avancées dans votre pipeline et d'intégrer le CLI AWS dans vos tâches quotidiennes. Bon "cloud computing" !

Je vous recommande de consulter le cursus AWS Cloud Practitioner sur DataCamp pour devenir un expert AWS.

FAQ

Pourquoi devrais-je utiliser AWS CLI au lieu de la console de gestion AWS ?

L'AWS CLI vous permet d'interagir avec les services AWS directement à partir de votre terminal, offrant ainsi des capacités d'automatisation et des flux de travail plus rapides, ce qui n'est pas aussi facilement réalisable avec la console AWS.

Dois-je vérifier la somme de contrôle du fichier après avoir téléchargé le programme d'installation depuis AWS ?

Bien que cela ne soit pas obligatoire, la vérification de la somme de contrôle du paquet d'installation est une bonne pratique.

Comment puis-je vérifier si AWS CLI est déjà installé sur mon ordinateur ?

Ouvrez votre terminal et exécutez "aws --version". S'il renvoie "aws-cli/x.x.x...", AWS CLI est installé. Néanmoins, la mise à jour vers la dernière version est une bonne pratique.

Que dois-je faire si je rencontre des erreurs d'authentification ou de permissions lorsque j'utilise AWS CLI ?

Ces erreurs sont dues à des informations d'identification incorrectes ou à des autorisations insuffisantes. Vérifiez à nouveau vos clés d'accès AWS, assurez-vous qu'elles sont associées à l'utilisateur ou au rôle IAM correct, et vérifiez que vos politiques IAM autorisent les actions requises. Si vous utilisez un rôle et que le jeton de session a expiré, exécutez la commande "aws sso login". Reportez-vous à la section "Utilisateur du centre d'identité IAM" pour connaître les étapes détaillées.

Comment puis-je utiliser AWS CLI pour gérer des ressources dans plusieurs régions ?

Vous pouvez spécifier la région AWS dans vos commandes à l'aide de l'indicateur "--region", ou vous pouvez définir une région par défaut à l'aide de la commande "aws configure". Reportez-vous à la section "Options de configuration" pour plus d'informations.


Kenny Ang's photo
Author
Kenny Ang
LinkedIn

Ingénieur chevronné en infrastructure cloud et DevOps avec une expertise en Terraform, GitLab CI/CD pipelines, et un large éventail de services AWS, Kenny est compétent dans la conception de solutions cloud évolutives, sécurisées et optimisées en termes de coûts. Il excelle dans la construction d'infrastructures réutilisables, l'automatisation des flux de travail avec Python et Bash, et l'intégration des meilleures pratiques de sécurité dans les pipelines CI/CD. Avec une vaste expérience pratique de Kubernetes et de divers outils d'observabilité, Kenny est compétent pour gérer et orchestrer des microservices tout en garantissant une observabilité et un suivi des performances robustes. Reconnu pour son leadership, son mentorat et son engagement en faveur de l'innovation, Kenny fournit constamment des solutions fiables et évolutives pour les applications cloud-natives modernes. Il s'efforce de rester à la pointe des tendances du secteur et des technologies émergentes, en élargissant et en approfondissant continuellement ses compétences.

Sujets

Apprenez-en plus sur AWS grâce à ces cours !

cours

AWS Cloud Technology and Services Concepts

3 hr
7K
Master AWS cloud technology with hands-on learning and practical applications in the AWS ecosystem.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus