aws-tools
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>
Metadata
Release files for aws-tools 1.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aws-tools-1.1.9.tar.gz | 10.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aws_tools-1.1.9-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 22.0 kB
Release files / aws-tools-1.1.9.tar.gz
| Download URL | aws-tools-1.1.9.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5508152dfd3ed7fa3de081ac41c8123e08f68bd9ebc97ce241c1c38721f2a04b
|
|
BLAKE2b-256 checksum How to use checksums |
5808f9bc9ef2c2b138e1a45be0acecd05db932138ffed38e0ce912270d8d531b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / aws_tools-1.1.9-py2.py3-none-any.whl
| Download URL | aws_tools-1.1.9-py2.py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
aa4d485bbfa1201f790753194f12b9ff9420f75f3f8054837bb56483c6f91966
|
|
BLAKE2b-256 checksum How to use checksums |
9eb7df22290cddb374c644de7158c2618666c73a06c299df403697bb327352a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for aws-tools 1.1.9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.