Is there a way to list available/configured AWS CLI profiles, other than parsing ~/.aws/config and/or ~/.aws/credentials for profile names?


You can list profiles in your aws config/credential files using list-profiles:

aws configure list-profiles

This is working for me with aws-cli version 2.0.8.

  • 3
    It's new in AWS CLI 2.x. – Ville Apr 22 '20 at 23:30
  • this should be bumped as as the answer in 2020 – tom Jul 16 '20 at 16:17

(Answering my own question.)

No, there is not.

I wrote two scripts that include the parsing I ended up using. For anyone interested, they're available in two GitHub repositories:

awscli-mfa and aws-scripts

There are two related blog articles : "AWS CLI Key Rotation Script for IAM Users revisited", and "Easy MFA and Profile Switching in AWS CLI".

(update 2019-01-27: the blog article "Easy MFA and Profile Switching in AWS CLI" is out of date as it refers to the awscli-mfa.sh script version 1.x while the rewritten 2.x has been released. An updated blog article is forthcoming, but in the meanwhile, please refer to the awscli-mfa repository documentation)

  • 1
    As an answer lower down states, AWS CLI v2 has aws configure list-profiles. Unfortunately, v2 is bit more tedious to install & update than v1 (as of 2020, at least) – mblakesley May 27 '20 at 6:15

Parsing ~/.aws/credentials was simple enough for me.

$ cat ~/.aws/credentials | grep -o '\[[^]]*\]'

=> [default] [other_profile] [other_profile2]

I also aliased the command into aws-profiles by adding the following line into my ~/.bash_profile

alias aws-profiles="cat ~/.aws/credentials | grep -o '\[[^]]*\]'"

utilizing a profile

add --profile <profile_name> to your aws command. Ex. $ aws s3 cp ~/my.pdf s3://my_bucket/my.pdf --profile other_profile2


If you want to parse the config file rather than credentials (which I found was more practical when using a source_profile rather than having unique credentials defined in credentials for each profile), then the following should do the trick:

cat ~/.aws/config | grep "\[profile " | sed -e 's/\[//g' -e 's/\]//g' -e 's/profile //g'

This will find all lines like this:

[profile foo]
[profile bar]

And return this:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.