No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Command-line tool to generate AWS session credentials.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 0.11.1
~> 1.10
~> 2.3.2
~> 10.0
>= 0

Runtime

~> 2.1
= 2.3.0
~> 3.0
~> 0.19
~> 1.0.0
 Project Readme

Aws::Session::Credentials

Build Status Gem Version

Command-line tool to generate AWS session credentials.

Gets a set of session credentials from the AWS STS service and saves them to ~/.aws/credentials (by default). You can optionally provide an MFA device and code too if your IAM user/role requires it.

Installation

Add this line to your application's Gemfile:

gem 'aws-session-credentials'

And then execute:

$ bundle

Or install it yourself as:

$ gem install aws-session-credentials

Building native extensions for dependencies

On Ubuntu, you may need to run the following before installing this gem:

$ sudo apt-get install libccid libpcsclite-dev pcscd pcsc-tools

Usage

Generating new session credentials

Example:

$ aws-session --mfa-code 123456

To set the full list of CLI options:

$ aws-session --help new

Usage:
  aws-session

Options:
Usage:
  aws-session new

Options:
  [--aws-access-key-id=AWS-ACCESS-KEY-ID]          # Access key used to generate session token
  [--aws-secret-access-key=AWS-SECRET-ACCESS-KEY]  # Secret key used to generate session token
  [--aws-region=AWS-REGION]                        # AWS region to connect to
  [--config-file=CONFIG-FILE]                      # YAML file to load config from
                                                   # Default: ~/.aws/aws-session-config.yml
  [--source-profile=SOURCE-PROFILE]                # Profile in config file that user credentials will be loaded from
                                                   # Default: default
  [--profile=PROFILE]                              # Profile that session token will be loaded into
                                                   # Default: default
  [--duration=N]                                   # Duration, in seconds, that credentials should remain valid
  [--mfa-device=MFA-DEVICE]                        # ARN of MFA device
  [--mfa-code=MFA-CODE]                            # Six digit code from MFA device
  [--yubikey-name=YUBIKEY-NAME]                    # Name of yubikey device
                                                   # Default: Yubikey
  [--oath-credential=OATH-CREDENTIAL]              # Name of OATH credential

Assuming a role

Example:

$ aws-session assume-role --role-arn=ROLE_ARN --role-session-name=ROLE_SESSION_NAME

Source profiles

Instead of specifying all of the options via the command line each time you want to generate new session credentials, you can store the options in a source profile.

$ aws-session configure
Source profile (leave blank for "default"):
AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key:
AWS region: ap-southeast-2
Session duration (in seconds): 86400

Configure MFA? y
MFA device ARN: arn:aws:iam::000000000000:mfa/user.name@example.com

Configure Yubikey? y
OATH credential name: user.name@example.com@accountalias

See aws-session --help configure for more info. By default, the configuration is stored in ~/.aws/aws-session-config.yml.

Shell environment variables

Credentials can be set as environment variables in your current shell by running something like the following example. Consider generating new session credentials or assuming a role before running this command.

eval "$(aws-session shell-env bash)"

Currently only bash is supported.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/zl4bv/aws-session-credentials. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.