A port of some nice features of AWS plugin of Oh My Zsh framework.
The main work of translation from zsh to fish has been made by Claude. The result has been approved and tested by me.
The following parts of this documentation come from the original documentation of the Oh My Zsh AWS plugin.
Install using fisher:
fisher install remmercier/fish-aws-
asp [<profile>]: sets$AWS_PROFILEand$AWS_DEFAULT_PROFILE(legacy) to<profile>. It also sets$AWS_EB_PROFILEto<profile>for the Elastic Beanstalk CLI. It sets$AWS_PROFILE_REGIONfor display inaws_prompt_info. Runaspwithout arguments to clear the profile. -
asp [<profile>] login: If AWS SSO has been configured in your aws profile, it will run theaws sso logincommand following profile selection. -
asp [<profile>] login [<sso_session>]: In addition toasp [<profile>] login, if SSO session has been configured in your aws profile, it will run theaws sso login --sso-session <sso_session>command following profile selection. -
asp [<profile>] logout: If AWS SSO has been configured in your aws profile, it will run theaws sso logoutcommand following profile selection. -
asr [<region>]: sets$AWS_REGIONand$AWS_DEFAULT_REGION(legacy) to<region>. Runasrwithout arguments to clear the profile. -
acp [<profile>] [<mfa_token>]: in addition toaspfunctionality, it actually changes the profile by assuming the role specified in the<profile>configuration. It supports MFA and sets$AWS_ACCESS_KEY_ID,$AWS_SECRET_ACCESS_KEYand$AWS_SESSION_TOKEN, if obtained. It requires the roles to be configured as per the official guide. Runacpwithout arguments to clear the profile. -
agp: gets the current value of$AWS_PROFILE. -
agr: gets the current value of$AWS_REGION. -
aws_profiles: lists the available profiles in the$AWS_CONFIG_FILE(default:~/.aws/config). Used to provide completion for theaspfunction. -
aws_regions: lists the available regions. Used to provide completion for theasrfunction.
- Set AWS_PROFILE_STATE_ENABLED=true in your fish configuration if you want the aws profile to persist between shell sessions. This option might slow down your shell startup time. By default the state file path is /tmp/.aws_current_profile. This means that the state won't survive a reboot or otherwise GC. You can control the state file path using the AWS_STATE_FILE environment variable.
Configuration and credential file settings by AWS
Source profile credentials in ~/.aws/credentials:
[source-profile-name]
aws_access_key_id = ...
aws_secret_access_key = ...Role configuration in ~/.aws/config:
[profile source-profile-name]
mfa_serial = arn:aws:iam::111111111111:mfa/myuser
region = us-east-1
output = json
[profile profile-with-role]
role_arn = arn:aws:iam::9999999999999:role/myrole
mfa_serial = arn:aws:iam::111111111111:mfa/myuser
source_profile = source-profile-name
region = us-east-1
output = json- anakaiti/fish-aws-profile-switcher: Fish shell plugin to switch between AWS profiles
- AWS profile switcher for fish shell
- shidil/awsctx: Shell script to switch between aws cli profiles using fzf and trigger sso login if unauthenticated
I made this project cause most of existing projects listed above do not handle the login process.