在多个aws帐户之间切换并更新api访问密钥

aws-tools的Python项目详细描述


PyPI

此软件包为aws平台提供工具,例如:

  • 在多个帐户之间切换
  • 更新API访问密钥

还有其他人。

aws工具出现的主要原因是,以安全和简单的方式使用带有不同访问密钥的awscli

工作原理

在AWS帐户之间切换:

$ 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

更新AWS API访问密钥:

$ 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

开始

Prerequisites:

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

安装必要的软件包,并生成新的密钥对:

$ 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.

如果尚未配置区域,请使用awscli配置:

$ 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!

安装

只需运行:

$ pip install --user aws-tools

配置

美国焊接学会证书

~/.aws目录中创建临时env.<environment>.conf文件 对于每个aws环境。

例如,如果您有3个aws环境:test、stage和prod,那么 应该是~/.aws目录中的3个配置文件:

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

编辑每个文件:

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

用gpg加密每个文件:

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

并删除临时的env.*.conf文件!

Run ^{tt5}$ to find out what is your ^{tt6}$

外壳

aws工具附带了方便的命令完成和bash提示功能。 只需添加到您的~/.bashrc

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

SMTP凭据(可选)

如果要将更新的aws访问密钥发送到 电子邮件。

~/.aws目录中创建临时smtp.cfg文件。

编辑SMTP设置:

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

用gpg加密配置文件:

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

并删除临时的smtp.cfg文件!

用法

示例

自动完成:

$ awsenv<TAB><TAB>
prod stage test

使用测试访问键:

$ awsenv test

为当前外壳设置aws访问密钥:

$ awsenv unset

旋转产品访问键:

$ awsroll prod

旋转所有环境的访问键:

$ awsroll

使用gpg代理旋转所有环境的访问密钥,并将它们发送到电子邮件:

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

旋转测试环境的访问键并将信息发送到电子邮件:

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程Java易失性和可见性   如何正确组合循环(Java)?   java在外部库中设置CDI   java使用enum类方法中类的HashSet   java如何整理节点或文档字段?   是否在java中接受的方法调用中传递“this”   安卓无法bluid cordova应用程序:JDK的java需求检查失败   java从Spring更新web UI   java巨大的分配:如果发生巨大的分配,我如何要求jvm打印日志   java Tomcat身份验证要求重新登录,即使浏览器尚未关闭   java事务原子性与MySQL、MongoDB、RabbitMQ   java什么导致RTTI违反OpenClosed原则?   java将ISBN10转换为ISBN13   在MacOS X上用Eclipse Mars远程调试Tomcat 7   java在安卓中添加自定义框架   java Android在文件中写入最后一个值   java我想比较ArrayList<Player>数组中的每个元素和int[]数组   由@Version annotated int不递增引起的java OptimisticLockException   java SpelEvaluationException:EL1008E:在Thymeleaf应用程序中