How do I set the name of the default profile in AWS CLI?

153.6k views Asked by At

When I give the command aws config list, I get the following output for the default profile:

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None

However, when I give the command for a named profile, I get a profile name

$ aws configure list --profile MyProfile
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                MyProfile           manual    --profile

I have tried aws configure set profile Default to name the default profile as Default by reading the 'set' CLI command, I also tried aws configure set StoreAs Default because I thought that's what's the variable is named after I read this page. I want to do this because I want have two profiles and I want to switch between profiles using the AWS_DEFAULT_PROFILE environment variable.

6

There are 6 answers

5
ijustneedanswers On BEST ANSWER

I have multiple profiles too, I use AWS_DEFAULT_PROFILE to switch back and forth. However, I've named each profile something descriptive, like aws-engineering and aws-production. Then, I can use set AWS_DEFAULT_PROFILE=aws-engineering and I'm good to go.

I have no DEFAULT profile specified in my ~/.aws/config, this was intentional so that I always explicitly have to choose which environment I'm working on.

1
TheRookierLearner On

You just switch to the profile you want (for ex: in Linux use: export AWS_DEFAULT_PROFILE=MyProfile) and then switch back to the default profile using export AWS_DEFAULT_PROFILE=default. 'default' is the profile name given to your first profile when you create it.

1
Subrata Fouzdar On

in Windows if you want to make sure the change of profile persists in new command line session better to use setx

setx AWS_DEFAULT_PROFILE profile_name      

Remember to to close the command prompt and open a new one (so that changes made are reflected)

0
davidvandebunte On

It's not clear in the leading answer that AWS_DEFAULT_PROFILE doesn't always work (that it does not always work is only suggested by this comment). It in particular doesn't work with the Java SDK, which is quite common. Admittedly, the OP only mentions the CLI, but AWS_PROFILE works with the CLI as well as:

The question is: what tools only work with AWS_DEFAULT_PROFILE but not AWS_PROFILE? Can we forget about AWS_DEFAULT_PROFILE? From Managing AWS environment credentials made easy | AWS in Plain English:

The ‘Default’ variants are used by older versions of SDKs.

In practice I've never run into these older SDKs or any other tool that doesn't accept AWS_PROFILE.

1
DataCrusade1999 On

If you want to set up your own profile as a default one then you should consider making changes to your shell's startup script.

For Powershell, this is how you can do it.

$Env:AWS_PROFILE="admin"

here the profile name is admin .

In Linux and macOS you can do something like this.

export AWS_PROFILE=admin

if changes persist then everything is good otherwise make changes to your ~/.bashrc or ~/.zshrc.

1
kenorb On

Setting the AWS_DEFAULT_PROFILE environment variable at the command line should specify the profile.

See: Can I specify a default AWS configuration profile?

For example:

Linux, macOS, or Unix

export AWS_DEFAULT_PROFILE=user2

Note: To unset, run: unset AWS_DEFAULT_PROFILE.

To make the change persistent, add above line into your ~/.bashrc user's file.

Note: You can also use AWS_PROFILE. See: Named Profiles.

Windows

set AWS_DEFAULT_PROFILE=user2

Source: User Guide » Configuring the AWS CLI » Named Profiles.

See also: A New and Standardized Way to Manage Credentials in the AWS SDKs.