Created
July 20, 2021 14:05
-
-
Save dictav/fdbab13fe4389071fb11ca3bf8d3c09e to your computer and use it in GitHub Desktop.
aws cli using docker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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