There are two ways to use it.
- awsenv list - returns the list of all available accounts/environments.
- awsenv
- sets, based on values provided in ~/.aws/credentaials and ~/.aws/config, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION.
The actual command to set environment uses two AWK scripts. First one looks for requested account name and set variable "a" to 1. When "a" equals 1 it prints shell export command for access_key_id and for secret_access_key to standard output, which is redirected to $TMP_FILE. Then it sources, prints and deletes that file.
Please note that in current form script requires access_key_id being define before secret_access_key. Printing the value of all variables, especially secret_aceess_key could be consider as security weakness, so you might want to modify/remove "cat $TMP_FILE line.
# vim: set filetype=sh
awsenv () {
if [[ $1 == list ]]
then
print $1
awk '/\[.*\]/ {print $1}' ~/.aws/credentials
else
TMP_FILE=/tmp/current_aws
awk \
'BEGIN{a=0};\
/\['$1'\]/ {a=1};\
/access_key_id/ {if (a==1){printf "export %s=%s\n", toupper($1), $3}};\
/secret_access_key/ {if (a==1) {printf "export %s=%s\n", toupper($1), $3;a=0}}'\
~/.aws/credentials > $TMP_FILE
awk \
'BEGIN{a=0};\
/\[profile '$1'\]/ {a=1};\
/region/ {if (a==1){printf "export AWS_DEFAULT_%s=%s\n", toupper($1), $3; a=0}}'\
~/.aws/config >> $TMP_FILE
source $TMP_FILE
cat $TMP_FILE
rm $TMP_FILE
fi
}
Finally, initial version of this script and some discusion on profiles in older boto versions is in this post http://larryn.blogspot.co.uk/2015/03/how-to-deal-with-aws-profiles.html