git.fiddlerwoaroof.com
Raw Blame History
ensure-aws-creds() {
  if [[ -f "$HOME/.cj-aws" ]]; then
    source "$HOME/.cj-aws"
    export AWS_ACCESS_KEY_ID
    export AWS_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN
  fi
}

cleanup-cred-file() {
  echo "Cleaning up old credentials."
  rm -f "$HOME/.cj-aws"
}

aws-end-session() {
  cleanup-cred-file

  unset AWS_ACCESS_KEY_ID
  unset AWS_SECRET_ACCESS_KEY
  unset AWS_SESSION_TOKEN
}

aws-open-console() {
  open "$(aws-get-url-inline)"
}

aws-get-url-inline() {
  python3 <<EOF
import http.client
import json
import urllib.parse

result = json.dumps({
  "sessionId": "$AWS_ACCESS_KEY_ID",
  "sessionKey": "$AWS_SECRET_ACCESS_KEY",
  "sessionToken": "$AWS_SESSION_TOKEN"
})

path = '/federation?Action=getSigninToken&Session=' + urllib.parse.quote_plus(result, safe="")

conn = http.client.HTTPSConnection("signin.aws.amazon.com")
conn.request("GET", path)
rq = conn.getresponse()

if rq.status != 200:
  raise Exception('request failed because %s', rq.reason)

data = json.load(rq)
signin_token = data['SigninToken']

print('https://signin.aws.amazon.com/federation?Action=login&Destination=https%3A%2F%2Fconsole.aws.amazon.com&SigninToken='+signin_token)
EOF
}