Y a-t-il un moyen de répertorier les profils AWS CLI disponibles/configurés, autre que l'analyse de ~/.aws/config
et/ou de ~/.aws/credentials
pour les noms de profil?
Réponses
Trop de publicités?Vous pouvez répertorier les profils dans vos fichiers de configuration / d'identification aws en utilisant list-profiles
:
aws configure list-profiles
Cela fonctionne pour moi avec la version 2.0.8 d'aws-cli.
(Répondant à ma propre question.)
Non, il n'y en a pas.
J'ai écrit deux scripts qui incluent l'analyse que j'ai finalement utilisée. Pour ceux qui sont intéressés, ils sont disponibles dans deux dépôts GitHub :
Il existe deux articles de blog connexes : "AWS CLI Key Rotation Script for IAM Users revisited", et "Easy MFA and Profile Switching in AWS CLI".
(mise à jour 2019-01-27 : l'article de blog "Easy MFA and Profile Switching in AWS CLI" est obsolète car il fait référence à la version 1.x du script awscli-mfa.sh
alors que la version 2.x réécrite a été publiée. Un article de blog mis à jour est à venir, mais en attendant, veuillez vous référer à la documentation du dépôt awscli-mfa)
Le parsing de ~/.aws/credentials
a été assez simple pour moi.
$ cat ~/.aws/credentials | grep -o '\[[^]]*\]'
\=> [default] [other_profile] [other_profile2]
J'ai également créé un alias de la commande en aws-profiles
en ajoutant la ligne suivante dans mon fichier ~/.bash_profile
alias aws-profiles="cat ~/.aws/credentials | grep -o '\[[^]]*\]'"
utiliser un profil
Ajoutez --profile
à votre commande aws. Ex. $ aws s3 cp ~/my.pdf s3://my_bucket/my.pdf --profile other_profile2
Si vous souhaitez analyser le fichier config
plutôt que credentials
(ce que j'ai trouvé plus pratique lors de l'utilisation d'un source_profile plutôt que d'avoir des informations d'identification uniques définies dans credentials
pour chaque profil), alors ce qui suit devrait faire l'affaire:
cat ~/.aws/config | grep "\[profile " | sed -e 's/\[//g' -e 's/\]//g' -e 's/profile //g'
Cela trouvera toutes les lignes comme ceci:
[profile foo]
[profile bar]
Et retournera ceci:
foo
bar