bash-it/plugins/available/aws.plugin.bash

70 lines
2.0 KiB
Bash

cite about-plugin
about-plugin 'AWS helper functions'
function awskeys {
about 'helper function for AWS credentials file'
group 'aws'
if [[ $# -eq 1 ]] && [[ "$1" = "list" ]]; then
__awskeys_list "$2"
elif [[ $# -eq 2 ]] && [[ "$1" = "show" ]]; then
__awskeys_show "$2"
elif [[ $# -eq 2 ]] && [[ "$1" = "export" ]]; then
__awskeys_export "$2"
else
__awskeys_help
fi
}
function __awskeys_help {
echo -e "Usage: awskeys [COMMAND] [profile]\n"
echo -e "Helper to AWS credentials file.\n"
echo -e "Commands:\n"
echo " help Show this help message"
echo " list List available AWS credentials profiles"
echo " show Show the AWS keys associated to a credentials profile"
echo " export Export an AWS credentials profile keys as environment variables"
}
function __awskeys_get {
local ln=$(grep -n "\[ *$1 *\]" ~/.aws/credentials | cut -d ":" -f 1)
if [[ -n "${ln}" ]]; then
tail -n +${ln} ~/.aws/credentials | egrep -m 2 "aws_access_key_id|aws_secret_access_key"
fi
}
function __awskeys_list {
local credentials_list="$(egrep '^\[ *[a-zA-Z0-0_-]+ *\]$' ~/.aws/credentials)"
if [[ -n $"{credentials_list}" ]]; then
echo -e "Available credentials profiles:\n"
for cred in ${credentials_list}; do
echo " $(echo ${cred} | tr -d "[]")"
done
echo
else
echo "No profiles found in credentials file"
fi
}
function __awskeys_show {
local p_keys="$(__awskeys_get $1)"
if [[ -n "${p_keys}" ]]; then
echo "${p_keys}"
else
echo "Profile $1 not found in credentials file"
fi
}
function __awskeys_export {
local p_keys=( $(__awskeys_get $1 | tr -d " ") )
if [[ -n "${p_keys}" ]]; then
for p_key in ${p_keys[@]}; do
local key="${p_key%=*}"
export "${key^^}=${p_key#*=}"
done
export AWS_DEFAULT_PROFILE="$1"
else
echo "Profile $1 not found in credentials file"
fi
}