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 }