Comment configurer et gérer efficacement plusieurs profils AWS CLI

Apprenez à gérer efficacement plusieurs comptes et environnements AWS à l'aide des profils nommés d'AWS CLI. Ce guide fournit des instructions étape par étape sur la configuration, la commutation entre et la sécurisation de différents ensembles d'identifiants et de paramètres AWS. Optimisez votre flux de travail cloud en maîtrisant la gestion des profils pour une productivité et une sécurité accrues.

38 vues

Comprendre les Profils AWS CLI

L'Interface de Ligne de Commande AWS (AWS CLI) est un outil puissant pour interagir avec Amazon Web Services. Pour les utilisateurs gérant plusieurs comptes AWS ou différents rôles au sein d'un compte, la configuration et le basculement entre les profils sont cruciaux pour une gestion de flux de travail efficace. Les profils nommés vous permettent de stocker différents ensembles d'informations d'identification, de régions par défaut et de formats de sortie, permettant des transitions fluides entre divers environnements AWS sans spécifier manuellement les informations d'identification à chaque fois.

Ce guide vous accompagnera dans le processus de configuration, de gestion et d'utilisation de plusieurs profils AWS CLI. À la fin, vous serez en mesure d'optimiser vos interactions en ligne de commande sur différents comptes AWS, améliorant ainsi la sécurité et la productivité.

Configuration de votre Fichier de Configuration AWS CLI

L'AWS CLI stocke les informations de configuration dans un fichier nommé config et les informations d'identification dans un fichier nommé credentials. Par défaut, ces fichiers sont situés dans le répertoire .aws au sein du répertoire personnel de votre utilisateur (~/.aws/ sur Linux/macOS, %USERPROFILE%\.aws\ sur Windows).

Profil par Défaut

Lorsque vous configurez l'AWS CLI pour la première fois en utilisant aws configure, il crée un profil par défaut nommé [default]. Ce profil est utilisé si aucun autre profil n'est spécifié.

# Exemple d'un profil par défaut dans ~/.aws/credentials
[default]
aws_access_key_id = VOTRE_CLE_ACCES_PAR_DEFAUT
aws_secret_access_key = VOTRE_CLE_SECRET_PAR_DEFAUT
# Exemple d'un profil par défaut dans ~/.aws/config
[default]
region = us-east-1
output = json

Création de Profils Nommés

Pour créer un profil nommé, vous ajoutez simplement une nouvelle section à vos fichiers credentials et config, en utilisant un nom descriptif pour le profil. Par exemple, pour créer un profil pour un compte de production et un autre pour un compte de développement :

1. Modification de ~/.aws/credentials :

Ajoutez une nouvelle section avec un nom de profil (par exemple, [prod], [dev]).

# ~/.aws/credentials

[default]
aws_access_key_id = VOTRE_CLE_ACCES_PAR_DEFAUT
aws_secret_access_key = VOTRE_CLE_SECRET_PAR_DEFAUT

[prod]
aws_access_key_id = VOTRE_CLE_ACCES_PROD
aws_secret_access_key = VOTRE_CLE_SECRET_PROD

[dev]
aws_access_key_id = VOTRE_CLE_ACCES_DEV
aws_secret_access_key = VOTRE_CLE_SECRET_DEV

2. Modification de ~/.aws/config :

De même, ajoutez les sections correspondantes au fichier config. Vous pouvez spécifier la région et le format de sortie par profil.

# ~/.aws/config

[default]
region = us-east-1
output = json

[profile prod]
region = us-west-2
output = text

[profile dev]
region = eu-central-1
output = json

Notes Importantes :
* Lors de la définition des profils dans ~/.aws/config, vous devez préfixer le nom du profil par profile (par exemple, [profile prod]). Ceci est différent de ~/.aws/credentials, où vous utilisez simplement le nom du profil (par exemple, [prod]).
* Si un paramètre est défini à la fois dans le profil [default] et dans un profil nommé, le paramètre du profil nommé a priorité.

Basculement entre les Profils

Une fois vos profils nommés configurés, vous pouvez les utiliser en spécifiant l'option --profile avec vos commandes AWS CLI.

Exemple : Pour lister les buckets S3 dans votre compte de production :

aws s3 ls --profile prod

Exemple : Pour décrire les instances EC2 dans votre compte de développement :

aws ec2 describe-instances --profile dev

Si vous omettez l'option --profile, l'interface CLI utilisera le profil [default].

Définition d'un Profil par Défaut pour l'Environnement

Taper constamment --profile peut être fastidieux. Vous pouvez définir une variable d'environnement pour spécifier quel profil l'AWS CLI doit utiliser par défaut pour la session en cours.

Utilisation de la variable d'environnement AWS_PROFILE :

Sur Linux/macOS :

export AWS_PROFILE=prod

# Maintenant, les commandes utiliseront le profil 'prod' par défaut
aws s3 ls
aws ec2 describe-instances

Pour la désactiver :

unset AWS_PROFILE

Sur Windows (Invite de commandes) :

set AWS_PROFILE=prod

# Maintenant, les commandes utiliseront le profil 'prod' par défaut
aws s3 ls

Pour la désactiver :

set AWS_PROFILE=

Sur Windows (PowerShell) :

$env:AWS_PROFILE = "prod"

# Maintenant, les commandes utiliseront le profil 'prod' par défaut
aws s3 ls

Pour la désactiver :

Remove-Item Env:\AWS_PROFILE

Gestion de Comptes AWS Multiples avec des Profils

Ceci est un cas d'utilisation courant pour les profils nommés. Chaque profil peut être configuré avec les clés d'accès de l'utilisateur IAM pour un compte AWS différent. Ceci est particulièrement utile pour :

  • Développement vs Production : Garder vos environnements de développement et de production séparés pour la sécurité.
  • Équipes/Projets Différents : Isoler les ressources et les autorisations pour des équipes ou des projets distincts.
  • Accès Inter-comptes : Si vous êtes un administrateur ou un développeur ayant besoin de gérer des ressources dans plusieurs comptes.

Meilleure Pratique : Utilisation des Rôles IAM

Au lieu de stocker des clés d'accès à longue durée de vie pour chaque compte directement dans votre fichier d'identification, il est plus sûr et recommandé d'utiliser des rôles IAM. Cela implique :

  1. Créer un rôle IAM dans le compte cible que votre utilisateur IAM (dans votre compte principal) peut assumer.
  2. Configurer votre AWS CLI local pour assumer ce rôle lors de l'utilisation d'un profil spécifique.

Pour configurer l'assomption de rôle dans ~/.aws/config :

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ID_COMPTE:role/NOM_DU_ROLE
source_profile = default  # Ou un autre profil ayant les autorisations pour assumer le rôle
region = us-east-1
output = json

Lorsque vous utilisez aws ec2 describe-instances --profile dev-role, l'AWS CLI tentera automatiquement d'assumer le rôle IAM spécifié et utilisera les informations d'identification temporaires obtenues.

Options de Configuration Avancées

Au-delà des informations d'identification et de la région, les profils peuvent spécifier d'autres paramètres de l'AWS CLI :

  • output : json, text, table
  • region : par exemple, us-east-1
  • s3.max_concurrent_requests : Nombre de requêtes parallèles pour les opérations S3.
  • s3.max_queue_size : Taille de la file d'attente pour les téléchargements multipart S3.
  • cli_binary_url : Spécifier une URL personnalisée pour le téléchargement des binaires CLI (moins courant).

Exemple : Configuration des paramètres S3 pour un profil spécifique

# ~/.aws/config

[profile s3-optimized]
region = us-east-1
output = json
s3.max_concurrent_requests = 50
s3.max_queue_size = 10000

Conseils et Meilleures Pratiques

  • Utilisez des Noms de Profil Descriptifs : Rendez vos noms de profil clairs et indicatifs du compte ou de l'environnement qu'ils représentent (par exemple, prod-admin, dev-web, sandbox-research).
  • Sécurisez Vos Informations d'Identification : Ne committez jamais votre fichier ~/.aws/credentials dans un système de contrôle de version. Utilisez des rôles IAM pour l'accès inter-comptes chaque fois que possible afin d'éviter de stocker des clés d'accès à longue durée de vie.
  • Examinez Régulièrement les Clés d'Accès : Si vous devez utiliser des clés d'accès, faites-les pivoter périodiquement et désactivez les anciennes.
  • Tirez Parti des Variables d'Environnement : Utilisez AWS_PROFILE pour le basculement temporaire ou pour les pipelines CI/CD où vous devez cibler des comptes spécifiques.
  • Combinez Profil et Variables d'Environnement : Si une variable d'environnement AWS_PROFILE est définie, elle remplacera tout profil spécifié avec --profile.

Conclusion

Maîtriser les profils AWS CLI est une compétence fondamentale pour quiconque travaille intensivement avec Amazon Web Services. En configurant et en utilisant correctement les profils nommés, vous pouvez améliorer considérablement votre productivité, maintenir de meilleures pratiques de sécurité et gérer plusieurs environnements AWS avec aisance. Que vous basculiez entre les comptes de développement, de staging et de production ou que vous gériez des ressources pour différents clients, les profils offrent la flexibilité et le contrôle nécessaires pour des opérations cloud efficaces.