Configurer son AWS Cli sous Linux

Aujourd’hui, nous allons voir comment paramétrer notre client AWS Cli afin d’interagir avec notre plateforme AWS.

Les Credentials

Première chose : paramétrer les credentials afin de s’authentifier.

Inclure un nom entre crochet, mon trigramme « jla » dans cet exemple :

[root@monHost ~]# cat .aws/credentials
[default] 
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXX 
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

[jla]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[...]

A noter que pour utiliser le AWS Cli sans préciser de paire de clé, alors c’est le [default] qui est utilisé.

Par exemple, pour lister les instances en marche :

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --output json

Les Profiles

Les profiles classiques/simples :

Afin de se simplifier la vie, il est possible de spécifier quelques paramétrages par défaut. Par exemple, une région, si toute votre infra est stockée au même endroit :

[root@monHost ~]# cat .aws/config
[default]
output = json
region = eu-west-1

En multi-zones, nous pouvons utiliser plusieurs profiles en plus de celui par défaut pour attaquer une autre région (Paris dans cet exemple) :

[profile paris]
output = json
region = eu-west-3

Pour l’utiliser, il suffit de le préciser dans la ligne de commande :

aws ec2 describe-instances --profile wiki --filters "Name=instance-state-name,Values=running"

Les profiles en héritage des credentials :

Nous pouvons, pour des question de clarté, avoir des profiles parents qui utilisent des credentials (paires de clés).

Prenons un exemple avec du multi-comptes AWS totalement indépendants : un pour la production, un pour la pré-production.

Chaque profile va spécifier le format de sortie en json et la région Paris ou Irlande :

[root@monHost ~]# cat .aws/config
[profile preprod_paris] 
output = json 
region = eu-west-3
source_profile = preprod

[profile preprod_irlande] 
output = json 
region = eu-west-1 
source_profile = preprod

[profile prod_paris] 
output = json 
region = eu-west-3
source_profile = prod

[profile prod_irlande] 
output = json 
region = eu-west-1 
source_profile = prod

On note ici l’utilisation du paramètre source_profile. Ce paramètre fait référence aux credentials que nous avons évoqué en début d’article.

Ajoutons nos clés correspondantes aux 2 comptes :

[root@monHost ~]# cat .aws/credentials 
[preprod] 
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXX 
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

[prod] 
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXX 
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Nous pouvons maintenant lister les machines en marche sur la production de Paris uniquement :

aws ec2 describe-instances --profile prod_paris --filters "Name=instance-state-name,Values=running"

Ou bien la pré-produciton en Irlande :

aws ec2 describe-instances --profile preprod_irlande --filters "Name=instance-state-name,Values=running"

La bonne paire de clés sera alors utilisée sur la bonne région pour vous retourner les bonnes informations.

 

L’utilisation du Multi-Factor Authentification et des rôles

Vous utilisez peut-être, du moins vous devriez y penser, l’authentification via MFA.

Aussi, l’utilisation de rôles IAM permet de se connecter sur plusieurs environnements avec un seul compte tier.

Exemple :

  • Un compte « MonEntrepriseProduction » et un rôle « AdminProd » qui aura les droits sur ce compte.
  • Un compte utilisateur (chaque personne du service) auquel on va permettre l’utilisation du rôle « AdminProd ».
  • Une authentification via le Google Authentificator sur mon smartphone Android (MFA) pour le login sur mon compte utilisateur.
[root@monHost ~]# cat .aws/config 
[profile jla_paris] 
output = json 
region = eu-west-3 
source_profile = jla
role_arn = arn:aws:iam::19910XXXXXX:role/AdminProd
mfa_serial = arn:aws:iam::067591XXXXXX:mfa/jonathan.lambert@easyxxxx.fr

On ajoute donc les paramètres suivants :

  • role_arn que vous pourrez trouver sous le rôle AdminProd dans votre service IAM > Roles > AdminProd
  • mfa_serial que vous pourrez trouver sans rôle dans votre service IAM > Utilisateurs > VotreUtilisateur

 

On a donc une interrogation de la part du Cli qui nous demande le code MFA à saisir pour se logguer :

[root@monHost ~]# aws ec2 describe-instances --profile jla_paris --filters "Name=instance-state-name,Values=running"
Enter MFA code for arn:aws:iam::067591XXXXXX:mfa/jonathan.lambert@easyxxxx.fr: 
{
"Reservations": [

[...]

Une fois le code à 6 chiffres saisi, on obtient notre résultat !

 

Vous êtes désormais capables de vous authentifier via le AWS Cli de multiples façons 🙂

Envie de vous former sur les technologies AWS ? Débutez votre parcours par les notions techniques de bases AWS afin de monter en compétences sur les solutions Amazon Web Services.

 

2 réflexions sur “Configurer son AWS Cli sous Linux”

  1. Ping : Gouvernez vos ressources AWS avec Config Service - EASYTEAM

  2. Ping : Cloner un Security Group inter-région / inter-compte - EASYTEAM

Les commentaires sont fermés.