#!/bin/bash
# First argument - named profile which is used for assuming the role. Second argument - otp from google authenticator.
set -euo pipefail;
role_arn=$(aws configure get ${1}.role_arn)
mfa_serial=$(aws configure get ${1}.mfa_serial)
creds_json=$(aws sts assume-role --output json --profile gdb-infra-dev --role-arn ${role_arn} --duration-seconds 43200 --role-session-name assumed-session --serial-number ${mfa_serial} --token-code ${2})

AWS_ACCESS_KEY=$(echo $creds_json | jq -r .Credentials.AccessKeyId)
AWS_SECRET_ACCESS_KEY=$(echo $creds_json | jq -r .Credentials.SecretAccessKey)
AWS_SESSIONS_TOKEN=$(echo $creds_json | jq -r .Credentials.SessionToken)

echo "Your temporary AWS credentials:"
echo "------------"
column -t -s',' << EOF
Access Key,${AWS_ACCESS_KEY}
Secret Access Key,${AWS_SECRET_ACCESS_KEY}
SESSION TOKEN,${AWS_SESSIONS_TOKEN}
EOF
echo "------------"
echo "Those credentials have been set as default credentials, they are valid for 12 hours."

aws configure set default.aws_access_key_id ${AWS_ACCESS_KEY}
aws configure set default.aws_secret_access_key ${AWS_SECRET_ACCESS_KEY}
aws configure set default.aws_session_token ${AWS_SESSIONS_TOKEN}
