#profile #context #aws #manager #fuzzy-finder #aws-cli #command

bin+lib awsctx

为 AWS 配置文件的上下文管理器

6 个版本 (3 个重大变更)

0.5.0 2022 年 7 月 30 日
0.4.1 2022 年 5 月 3 日
0.3.1 2022 年 3 月 15 日
0.2.4 2022 年 3 月 4 日

#495身份验证

每月下载 26 次

MIT 许可证

505KB
1K SLoC

awsctx

codecov

带有模糊查找器的 AWS 配置文件上下文管理器

演示

demo

用法

help 命令显示每个命令的用法。

$ awsctx --help
USAGE:
    awsctx [OPTIONS] [SUBCOMMAND]

OPTIONS:
    -h, --help
            Print help information

    -v, --verbose
            Enable verbose output

    -V, --version
            Print version information

SUBCOMMANDS:
    active-context
            Show active context in the credentials
    auth
            Auth awscli with the specified profile by pre-defined scripts, then make it active
    completion
            Generate completion script
    help
            Print this message or the help of the given subcommand(s)
    list-contexts
            List all the contexts in the credentials
    refresh
            Auth awscli for the active profile by pre-defined scripts
    use-context
            Updates a default profile by a profile name

安装

Homebrew(仅限 macOS)

$ brew tap hiro-o918/homebrew-tap
$ brew install awsctx

CLI

注意:需要 jq

⬇️ 下载二进制文件并将其移动到 /usr/local/bin

macOS

$ curl -s https://api.github.com/repos/hiro-o918/awsctx/releases/latest \
  | jq -r '.assets[] | select(.name | test("^awsctx_v[0-9]+\\.[0-9]+\\.[0-9]+_x86_64-apple-darwin\\.tar\\.gz$")) | .browser_download_url' \
  | xargs wget -O - \
  | tar zxvf - \
  && mv awsctx /usr/local/bin

Linux

$ curl -s https://api.github.com/repos/hiro-o918/awsctx/releases/latest \
  | jq -r '.assets[] | select(.name | test("^awsctx_v[0-9]+\\.[0-9]+\\.[0-9]+_x86_64-unknown-linux-musl\\.tar\\.gz$")) | .browser_download_url' \
  | xargs wget -O - \
  | tar zxvf - \
  && mv awsctx /usr/local/bin

配置

configs.yaml

awsctx 指的是位于 ~/.awsctx/configs.yaml 的配置。如果您运行一次 awsctx,则会生成配置文件,或者您可以手动创建一个到 ~/.awsctx/configs.yaml

以下为 configs.yaml 的用法和示例

# Configurations for awsctx
# You can manually edit configurations according to the following usage

# To use subcommand `auth` or `refresh`, fill the below configs for each profile.
auth_commands:
  # configuration for `foo` profile with aws configure
  foo: |
    # you can use pre-defined parameter `{{profile}}` which is replaced by key of this block
    # In this case, `{{profile}}` is replaced by `foo`
    aws configure --profile {{profile}}
  # configuration for `bar` profile with [onelogin-aws-cli](https://github.com/physera/onelogin-aws-cli)
  bar: |
    # In this case, name of one-login configuration is same as `profile`
    onelogin-aws-login -C {{profile}} --profile {{profile}} -u [email protected]
  # default configuration for profiles without auth configuration
  __default: |
    aws configure --profile {{profile}}

配置完成

要启用完成,请运行以下命令。如果您通过 homebrew 安装 awsctx,则不需要此操作

$ awsctx completion --shell zsh > /path/to/completions/_awsctx

请将 /path/to 替换为环境中的路径。 bashelvishfish 也作为 --shell 选项可用

工作原理

登录

使用指定的配置文件名以某种方式授权您的 shell。然后,您将获得 ~/.aws/credentials,如下所示

[foo]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXX
aws_session_token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[bar]
aws_access_key_id = YYYYYYYYYYY
aws_secret_access_key = YYYYYYYYYYY
aws_session_token = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

通过 CLI 更新默认配置文件

使用 use-context update ~/.aws/credentials 将包含与选项中指定的值相同的 default 配置文件

$ awsctx use-context -p foo

例如,上述命令将更新凭证如下。

[foo]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXX
aws_session_token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[bar]
aws_access_key_id = YYYYYYYYYYY
aws_secret_access_key = YYYYYYYYYYY
aws_session_token = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

[default]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXX
aws_session_token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

依赖项

~17–28MB
~422K SLoC