Showing your AWSume AWS CLI profile in ZSH

Alex Kearns
Ubertas Consulting (part of Devoteam)
AWSume is a brilliant command line utility for assuming roles in your AWS
accounts and setting the relevant environment variables for the CLI, or local scripts, to work.
You’re able to run commands like awsume my-profile
and it’ll use the config and credentials files
found in the ~/.aws
directory (the same as the AWS CLI) to get a set of temporary credentials for
a role (or set the permanent credentials for a user).
However, the one thing that my current ZSH theme lacks is the ability to show what AWS profile I’ve currently assumed. For reference, I’m using the cloud theme for my shell.
I’ll assume you’ve got AWSume installed and set up at this point - this post isn’t going to cover
that. It’s a fairly simple process to get your profile showing up on the right of your prompt. Make
sure that your ZSH theme supports values in RPROMPT
. An easy way to test it is running the
following and seeing if anything shows up:
RPROMPT="MyTestValue"
All being well, your theme does support it and you can carry on with this tutorial. The next step is
to add the following to the bottom of your ~/.zshrc
file. The first line tells ZSH that it should
re-evaluate the prompt after each command is run. The second does a number of things. The first part
${AWSUME_PROFILE:+
defines that we want to set a value only when the AWSUME_PROFILE
variable is
unset or has a null value. The second part of the expression <aws:$AWSUME_PROFILE>}
defines the
value that we want to return if the condition is met. This would result in the prompt showing as
<aws:my-profile-name>
, you could customise the prefix and suffix for $AWSUME_PROFILE
to display
it how you desire. It’s important that you use single quotes rather than double quotes to ensure it
gets re-evaluated each time!
setopt PROMPT_SUBSTRPROMPT='${AWSUME_PROFILE:+<aws:$AWSUME_PROFILE>}'
Once this has been added, run source ~/.zshrc
and you’re good to go. Next time you use AWSume to
assume a CLI profile it’ll appear on the right!