Skip to main content

Switching between multiple AWS accounts & renewing API access keys

Project description

PyPI

This package provides tools for AWS platform, such as:

  • switching between multiple accounts

  • renewing API access keys

and others.

The main reason why aws-tools came to be, was using awscli with different access keys in the secure and easy way.

How it works

Switching between AWS accounts:

$ awsenv test
<test> $ aws s3 ls
...list of S3 objects on TEST environment...

### Explanation:
### <test> $ env | grep AWS
### AWS_SECRET_ACCESS_KEY=w0bM0rucARITPOUpcyAaX3iI9lGjJo7g8UUCUxIv
### AWS_ACCESS_KEY_ID=AKIAJPVK7VGH6CBZT5EQ
### AWS_ENV=test

<test> $ awsenv prod
<prod> $ aws s3 ls
...list of S3 objects on PROD environment...

### Explanation:
### <prod> $ env | grep AWS
### AWS_SECRET_ACCESS_KEY=P8crbSIvQ/Au0jfnW8XER9eJKxpQdYqpRVz5QxKo
### AWS_ACCESS_KEY_ID=AKIAJ4F26CMBPI1HF7MQ
### AWS_ENV=prod

Renewing AWS API access keys:

$ awsenv prod

### Explanation:
### <prod> $ env | grep AWS
### AWS_SECRET_ACCESS_KEY=P8crbSIvQ/Au0jfnW8XER9eJKxpQdYqpRVz5QxKo
### AWS_ACCESS_KEY_ID=AKIAJ4F26CMBPI1HF7MQ
### AWS_ENV=prod

<prod> $ awsroll prod
Rolled key for env prod: AccessKeyId=****************ZKQFQ; CreateDate=2018-11-14 13:10:04+00:00
<prod> $ awsenv prod

### Explanation:
### <prod> $ env | grep AWS
### AWS_SECRET_ACCESS_KEY=napb9J2RKzsSiTIjLRavN09qIfFzrMo7846zr2ou
### AWS_ACCESS_KEY_ID=AKIAJTGB6EFV7F4ZKQFQ
### AWS_ENV=prod

Getting started

Prerequisites:

aws-tools requires gpg (version >= 2.X) to decrypt/encrypt your AWS credentials.

Install necessary packages, and generate a new key pair:

$ sudo apt-get install gpg gpg-agent
$ gpg --gen-key

This document covers only gpg commands required to run aws-tools! If you need to use other gpg parameters, go to gpg documentation.

Configure your region using awscli if you haven’t done that yet:

$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: eu-west-1
Default output format [None]:

Do not provide any keys here!

Installation

Simply run:

$ pip install --user aws-tools

Configuration

AWS Credentials

In ~/.aws directory create temporary env.<environment>.conf file for each AWS environment.

For example, if you have 3 AWS environments: TEST, STAGE and PROD, there should be 3 config files in ~/.aws directory:

env.test.conf
env.stage.conf
env.prod.conf

Edit each file:

[default]
aws_access_key_id = <your_environment_specific_access_key_id>
aws_secret_access_key = <your_environment_specific_secret_access_key>

Encrypt each file with gpg:

$ gpg --encrypt --armor --output env.<environment>.conf.asc -r <your-gpg-user-id-name> env.<environment>.conf

and remove temporary env.*.conf files!

Run gpg -K to find out what is your <your-gpg-user-id-name>

Shell

aws-tools comes with handy command completion and bash prompt features. Simply add to your ~/.bashrc:

source $HOME/.local/bin/aws_tools_completion.bash 2>/dev/null
export PS1="\$(__awsenv_ps1 2>/dev/null)${PS1}"

SMTP credentials (optional)

This step is helpful if you want to send renewed AWS access keys to an email.

In ~/.aws directory create temporary smtp.cfg file.

Edit smtp settings:

smtplogin = <your_full_smtp_login>
smtppass = <your_password>
smtphost = <smtp_host>
smtpport = <smtp_port>

Encrypt config file with gpg:

$ gpg --encrypt --armor --output smtp.cfg.asc -r <your-gpg-user-id-name> smtp.cfg

and remove temporary smtp.cfg file!

Usage

Examples

Autocompletion:

$ awsenv<TAB><TAB>
prod stage test

Use TEST access keys:

$ awsenv test

Unset AWS access keys for current shell:

$ awsenv unset

Rotate PROD access keys:

$ awsroll prod

Rotate access keys for all environments:

$ awsroll

Rotate access keys for all environments using gpg agent, and send them to the email:

$ aws-roll-keys.py -a -e all -s <email@domain.org>

Rotate access keys for TEST environment and send info to the email:

$ aws-roll-keys.py -e test -i <email@domain.org>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws-tools-1.1.9.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

aws_tools-1.1.9-py2.py3-none-any.whl (11.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file aws-tools-1.1.9.tar.gz.

File metadata

  • Download URL: aws-tools-1.1.9.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.1

File hashes

Hashes for aws-tools-1.1.9.tar.gz
Algorithm Hash digest
SHA256 5508152dfd3ed7fa3de081ac41c8123e08f68bd9ebc97ce241c1c38721f2a04b
MD5 fdca32f3753aacd537fb421a2bba1376
BLAKE2b-256 5808f9bc9ef2c2b138e1a45be0acecd05db932138ffed38e0ce912270d8d531b

See more details on using hashes here.

File details

Details for the file aws_tools-1.1.9-py2.py3-none-any.whl.

File metadata

  • Download URL: aws_tools-1.1.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.1

File hashes

Hashes for aws_tools-1.1.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 aa4d485bbfa1201f790753194f12b9ff9420f75f3f8054837bb56483c6f91966
MD5 14c5f21166a0adb885b37ef1afd4b802
BLAKE2b-256 9eb7df22290cddb374c644de7158c2618666c73a06c299df403697bb327352a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page