在多个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变量始终存储0值。为什么?   如何使用Java/REST将Azure blob从一个存储容器移动到另一个存储容器?   java将commons DBCP从1.2升级到1.4,我应该害怕吗?   java如何使用分隔符拆分字符串?   java使用数组读取json对象   java在groovy中切片字符串   交换数组java的两个邻域元素   java移动用于确定字符串是否为回文的逻辑   java Android应用程序在一个活动中崩溃   java Sparkjava将webapp文件夹设置为静态资源/模板的文件夹   java复杂条件表达式,用户易用。   java如何仅在表存在时从表中选择值   java I无法将数据从Recyclerview传递到其他活动   java数据结构最佳设计(大数据)   java Android从DatePickerDialogFragment中删除日历视图   java将数据从Firebase获取到片段   数组。sort()在java中运行不正常