Skip to content

Instantly share code, notes, and snippets.

@zot42
Created February 6, 2018 17:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zot42/b0b2c18a030da71a1e1e7989e1d8884d to your computer and use it in GitHub Desktop.
Save zot42/b0b2c18a030da71a1e1e7989e1d8884d to your computer and use it in GitHub Desktop.
function to switch aws profiles that supports 2fa
aws-profile ()
{
case "$1" in
stage)
aws --profile ops sts assume-role --role-arn "{role_arn_here}" --role-session-name "my_aws_session" > /tmp/assume-role-output.txt
;;
dev)
aws --profile dev sts assume-role --role-arn "{role_arn_here}" --role-session-name "my_aws_session" > /tmp/assume-role-output.txt
;;
prod)
aws --profile prod sts assume-role --role-arn "{role_arn_here}" --role-session-name "my_aws_session" > /tmp/assume-role-output.txt
;;
*)
echo "Usage: specify profile i.e. dev, stage, prod"
esac
export AWS_ACCESS_KEY_ID=`cat /tmp/assume-role-output.txt | jq -c '.Credentials.AccessKeyId' | tr -d '"' | tr -d ' '`
export AWS_SECRET_ACCESS_KEY=`cat /tmp/assume-role-output.txt | jq -c '.Credentials.SecretAccessKey' | tr -d '"' | tr -d ' '`
export AWS_SESSION_TOKEN=`cat /tmp/assume-role-output.txt | jq -c '.Credentials.SessionToken' | tr -d '"' | tr -d ' '`
export AWS_SECURITY_TOKEN=`cat /tmp/assume-role-output.txt | jq -c '.Credentials.SessionToken' | tr -d '"' | tr -d ' '`
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment