add aws-sso-login
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
aws-logout() {
|
||||
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_ENVIRONMENT
|
||||
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_ENVIRONMENT AWS_PROFILE
|
||||
}
|
||||
|
||||
30
zsh/.local/share/zsh/functions/aws-sso-login
Normal file
30
zsh/.local/share/zsh/functions/aws-sso-login
Normal file
@@ -0,0 +1,30 @@
|
||||
aws-sso-login() {
|
||||
local profile="${1:-$AWS_PROFILE}"
|
||||
|
||||
if [[ -z "$profile" ]]; then
|
||||
profile=$(aws configure list-profiles \
|
||||
| fzf --height 40% --reverse --no-preview)
|
||||
fi
|
||||
|
||||
if [[ -z "$profile" ]]; then
|
||||
echo "Error: No profile provided or selected." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Validate existing session; login if expired or missing
|
||||
if ! aws sts get-caller-identity --profile "$profile" &>/dev/null; then
|
||||
aws sso login --use-device-code --profile "$profile" || return 1
|
||||
fi
|
||||
|
||||
# Export credentials to environment for third-party tools
|
||||
local creds
|
||||
creds=$(aws configure export-credentials --profile "$profile" --format env)
|
||||
if [[ $? -eq 0 ]]; then
|
||||
eval "$creds"
|
||||
export AWS_PROFILE="$profile"
|
||||
# echo "Environment configured for profile: $profile"
|
||||
else
|
||||
echo "Error: Failed to export credentials." >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@@ -48,9 +48,9 @@ zstyle ':vcs_info:git*' actionformats '%%S%r%%s:%{$fg[red]%}%b:%a%{$reset_color%
|
||||
|
||||
function set_prompt() {
|
||||
|
||||
if [[ -n "$AWS_ENVIRONMENT" ]]; then
|
||||
if [[ -n "$AWS_PROFILE" ]]; then
|
||||
aws_prompt="
|
||||
%S%B$AWS_ENVIRONMENT%b%s
|
||||
%S%B$AWS_PROFILE%b%s
|
||||
"
|
||||
else
|
||||
aws_prompt=""
|
||||
|
||||
Reference in New Issue
Block a user