git.fiddlerwoaroof.com
cj-aws-tools.zsh
7b921097
 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"
 }
 
 TERMINAL_PROGRAM=${TERMINAL_PROGRAM:-iTerm}
 aws-assume-developer() {
   cleanup-cred-file
 
   open -a CJAWSAccess
   
   while ! [[ -f "$HOME/.cj-aws" ]]; do
     sleep 1;
   done
   
   open -a "$TERMINAL_PROGRAM"
   ensure-aws-creds
 }
 
 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/console/home?region=us-west-1&SigninToken='+signin_token)
 print('https://signin.aws.amazon.com/federation?Action=login&Destination=https%3A%2F%2Fconsole.aws.amazon.com&SigninToken='+signin_token)
 EOF
 }