Skip to content

Instantly share code, notes, and snippets.

@diegopaludo
Created March 22, 2019 20:19
Show Gist options
  • Save diegopaludo/0f73194da87adce203f8c248412a9051 to your computer and use it in GitHub Desktop.
Save diegopaludo/0f73194da87adce203f8c248412a9051 to your computer and use it in GitHub Desktop.
Script to generate temporary credentials when use switch roles in AWS.
#!/bin/bash
#
# Generate temporary credencials
MAIN_ACCOUNT_CRED_FILE="$HOME/.aws/credentials"
MAIN_ACCOUNT_ACCESS=$(awk -F " = " '/aws_access_key_id/{sub("\r","") ; print $2}' "$MAIN_ACCOUNT_CRED_FILE")
MAIN_ACCOUNT_SECRET=$(awk -F " = " '/aws_secret_access_key/{sub("\r","") ; print $2}' "$MAIN_ACCOUNT_CRED_FILE")
ASSUMED_ACCOUNT_ID="<ACCOUNT_ID_THAT_WILL_BE_ASSUME>"
ROLE_ARN="arn:aws:iam::$ASSUMED_ACCOUNT_ID:role/<ROLE>"
MFA="<MFA_ARN>"
ROLE_NAME="<ACCOUNT_NAME_THAT_WILL_BE_ASSUME>"
TEMP_FILE="/tmp/temp_cred.json"
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
AWS_ACCESS_KEY_ID=$MAIN_ACCOUNT_ACCESS AWS_SECRET_ACCESS_KEY=$MAIN_ACCOUNT_SECRET aws sts assume-role \
--role-arn $ROLE_ARN \
--serial-number $MFA \
--token-code "$1" \
--role-session-name $ROLE_NAME > $TEMP_FILE
TEMP_ACCESS=$(jq -r .Credentials.AccessKeyId < $TEMP_FILE)
TEMP_SECRET=$(jq -r .Credentials.SecretAccessKey < $TEMP_FILE)
TEMP_TOKEN=$(jq -r .Credentials.SessionToken < $TEMP_FILE)
echo "export AWS_ACCESS_KEY_ID=$TEMP_ACCESS
export AWS_SECRET_ACCESS_KEY=$TEMP_SECRET
export AWS_SESSION_TOKEN=$TEMP_TOKEN" > /tmp/assumed_role
source /tmp/assumed_role
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment