Skip to content

Instantly share code, notes, and snippets.

@mohsen0
Last active May 11, 2021 09:39
Show Gist options
  • Save mohsen0/17b1131779d2d67fdc5bcfe5fde3b052 to your computer and use it in GitHub Desktop.
Save mohsen0/17b1131779d2d67fdc5bcfe5fde3b052 to your computer and use it in GitHub Desktop.
AWS Vault temporary profile

In order to create short lived credentials to use interact with AWS APIs using aws-vault, since most of IDEs like vscode, intellj still doesn't support the integration, you can add this bash function into ~/.bashrc.

function aws_vault_save(){
  local profile_name="$1"
  local region="${2:-eu-west-1}"
  local temp_profile="${profile_name}_tmp"
  creds=$(aws-vault exec -j "${profile_name}")
  aws --profile "${temp_profile}" configure set region "${region}"
  aws --profile "${temp_profile}" configure set output "json"
  aws --profile "${temp_profile}" configure set aws_access_key_id "$(echo $creds | jq -r .AccessKeyId)"
  aws --profile "${temp_profile}" configure set aws_secret_access_key "$(echo $creds | jq -r .SecretAccessKey)"
  aws --profile "${temp_profile}" configure set aws_session_token "$(echo $creds | jq -r .SessionToken)"
  echo "Profile ${temp_profile} added, Will exprie on $(echo $creds | jq -r .Expiration) UTC"
}
aws_vault_save dev

aws s3 ls --profile dev_tmp

or this variant that sets the profile too

function aws_vault_save(){
  local profile_name="$1"
  local region="${2:-eu-west-1}"
  local _profile="default"
  unset AWS_PROFILE
  creds=$(aws-vault exec -j "${profile_name}")
  aws --profile "${_profile}" configure set aws_access_key_id "$(echo ${creds} | jq -r .AccessKeyId)"
  aws --profile "${_profile}" configure set aws_secret_access_key "$(echo ${creds} | jq -r .SecretAccessKey)"
  aws --profile "${_profile}" configure set aws_session_token "$(echo ${creds} | jq -r .SessionToken)"
  aws --profile "${_profile}" configure set region "${region}"
  aws --profile "${_profile}" configure set output "json"
  # export AWS_PROFILE=${_profile}
  unset AWS_PROFILE
  export AWS_REGION=${region}
  echo "Profile ${_profile} added, Will exprie on $(echo $creds | jq -r .Expiration) UTC"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment