Skip to content

Instantly share code, notes, and snippets.

@dictav
Created July 20, 2021 14:05
Show Gist options
  • Save dictav/fdbab13fe4389071fb11ca3bf8d3c09e to your computer and use it in GitHub Desktop.
Save dictav/fdbab13fe4389071fb11ca3bf8d3c09e to your computer and use it in GitHub Desktop.
aws cli using docker
#!/bin/sh
session=~/.aws/session
establish_session() {
read -p 'code: ' code
file=$(uuidgen)
envs=$(env | grep AWS | sed -e 's/^/-e /')
docker run --rm -it -v $PWD:/work $envs --workdir /work --entrypoint bash amazon/aws-cli -c "aws sts get-session-token --serial-number $AWS_MFA_DEVICE --token-code $code > /work/$file"
mv $file $session
echo 'a new session has been established! 🍻'
}
check_session() {
test -r ~/.aws/session || return 1
src=$(cat $session | jq -r .Credentials.Expiration)
now=$(date +%s)
exp=$(date -j -f "%Y-%m-%dT%H:%M:%S+00:00" $src +%s)
test $now -lt $exp || return 1
return 0
}
check_session
test $? -ne 0 && establish_session
envs=$(cat $session | jq -r '.Credentials | "-e AWS_ACCESS_KEY_ID=\(.AccessKeyId) -e AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey) -e AWS_SESSION_TOKEN=\(.SessionToken)"')
docker run --rm -it -v $PWD:/work $envs --workdir /work amazon/aws-cli $@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment