#!/bin/bash set -euo pipefail : ${AWS_CREDENTIALS_FILE="$HOME/.aws/credentials"} : ${STS_SESSION_DURATION=36000} sts_keychain_get_session_token() { echo generating temporary credentials via sts >&2 aws-keychain exec $1 \ aws sts --output text get-session-token --duration-seconds ${STS_SESSION_DURATION} echo credentials are valid for ${STS_SESSION_DURATION}s >&2 } sts_keychain_format_credentials() { local id="$1" local secret="$2" local token="$3" cat < $AWS_CREDENTIALS_FILE } case "${1:-}" in cat) sts_keychain_cat "$@"; exit 0 ;; env) sts_keychain_env "$@"; exit 0 ;; exec) sts_keychain_exec "$@"; exit 0 ;; use) sts_keychain_use "$@"; exit 0 ;; esac exec aws-keychain "$@"