#!/bin/bash # run this script with source (.) command since we need access to # the exported AWS_PROFILE variable below in the parent shell e.g. # . ~/.local/bin/aws_get_session.sh 1234 # debug # set -x if [ "${BASH_SOURCE[0]}" -ef "$0" ] then echo "Hey, you should source this script, not execute it!" echo "e.g. '. aws_get_session.sh 1234'" exit 1 fi if [ -z $1 ];then echo "You must provide 2FA token!" return 1 fi # colors On_Yellow='\033[43m' On_White='\033[47m' NC='\033[0m' # No Color echo "Deleting old creds..." sed -i '/\[myprofile-session\]/,+4d' ~/.aws/credentials echo "Creating new creds..." # use existing profile KST=$(AWS_PROFILE=myprofile aws sts get-session-token --serial-number arn:aws:iam::xxxxxxxxxxxxxx:mfa/meandmyself --token-code "$1") cat << EOF >> ~/.aws/credentials [myprofile-session] aws_access_key_id = $(echo "$KST" | jq '.Credentials.AccessKeyId' | tr -d '"') aws_secret_access_key = $(echo "$KST" | jq '.Credentials.SecretAccessKey' | tr -d '"') aws_session_token = $(echo "$KST" | jq '.Credentials.SessionToken' | tr -d '"') EOF # below export will only work when sourcing this script export AWS_PROFILE=myprofile-session echo -e "Current AWS_PROFILE set to ${On_Yellow}$AWS_PROFILE${NC}"