diff options
author | Kevin Pullin <kevin.pullin@gmail.com> | 2020-04-06 07:59:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-06 16:59:56 +0200 |
commit | 9924af55db9e17c07aea2c64861c8d05632aa2a1 (patch) | |
tree | 44954de34acf76bb0af3357c94856bbea67bc062 | |
parent | 7e7ec4e6827dc207fa6a278153b3e92ec21ecb42 (diff) |
feat(aws): Use AWS_VAULT as the profile if set (#984)
* Use AWS_VAULT as the profile if set
[aws-vault](https://github.com/99designs/aws-vault) sets
the `AWS_VAULT` env var instead of `AWS_PROFILE` when an
aws-vault session is active.
This PR adds support for reading the AWS profile value from
the `AWS_VAULT` env var, giving priority to `AWS_VAULT` if both
it and `AWS_PROFILE` are set.
* Update docs for AWS_VAULT
-rw-r--r-- | docs/config/README.md | 3 | ||||
-rw-r--r-- | src/modules/aws.rs | 4 | ||||
-rw-r--r-- | tests/testsuite/aws.rs | 12 |
3 files changed, 18 insertions, 1 deletions
diff --git a/docs/config/README.md b/docs/config/README.md index 8c0131fb0..7e95048b3 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -136,6 +136,9 @@ The `aws` module shows the current AWS region and profile. This is based on `AWS_REGION`, `AWS_DEFAULT_REGION`, and `AWS_PROFILE` env var with `~/.aws/config` file. +When using [aws-vault](https://github.com/99designs/aws-vault) the profile +is read from the `AWS_VAULT` env var. + ### Options | Variable | Default | Description | diff --git a/src/modules/aws.rs b/src/modules/aws.rs index 7962516d7..ce409bdb0 100644 --- a/src/modules/aws.rs +++ b/src/modules/aws.rs @@ -50,7 +50,9 @@ fn get_aws_region_from_config(aws_profile: Option<&str>) -> Option<Region> { fn get_aws_profile_and_region() -> (Option<Profile>, Option<Region>) { match ( - env::var("AWS_PROFILE").ok(), + env::var("AWS_VAULT") + .or_else(|_| env::var("AWS_PROFILE")) + .ok(), env::var("AWS_REGION").ok(), env::var("AWS_DEFAULT_REGION").ok(), ) { diff --git a/tests/testsuite/aws.rs b/tests/testsuite/aws.rs index 01f518f81..988238b9d 100644 --- a/tests/testsuite/aws.rs +++ b/tests/testsuite/aws.rs @@ -68,6 +68,18 @@ fn profile_set() -> io::Result<()> { } #[test] +fn profile_set_from_aws_vault() -> io::Result<()> { + let output = common::render_module("aws") + .env("AWS_VAULT", "astronauts-vault") + .env("AWS_PROFILE", "astronauts-profile") + .output()?; + let expected = format!("on {} ", Color::Yellow.bold().paint("☁️ astronauts-vault")); + let actual = String::from_utf8(output.stdout).unwrap(); + assert_eq!(expected, actual); + Ok(()) +} + +#[test] fn profile_and_region_set() -> io::Result<()> { let output = common::render_module("aws") .env("AWS_PROFILE", "astronauts") |