帮助您使用基于SSO的凭据运行aws命令

awshelper的Python项目详细描述


AWS助手

https://pypi.org/project/awshelper/
一个实用程序,允许您在运行与AWS对话的工具时使用awsso凭据。

基本原理

awscliv2和awsso使用一种全新的、不同的方式来持久化AWS凭证。 这可能会破坏与许多使用awsapi的现有工具的兼容性,比如 地形,awslogs,可能还有上千个。

AWS Helper读取AWS cliv2存储的“new and modern”凭证, 并从中提取“老派”环境变量。然后在这个环境中执行指定的命令。

先决条件:

  • awshelper需要python3.x(在3.8上测试)和pip
  • 已安装aws cli v2(确保运行最新版本)
  • 您的组织是用awsso设置的,这样您就可以运行aws configure sso --profile myprofile(需要一个命名的概要文件) 如果一切都好的话,就去吧。在

如何使用awshelper

安装:
pip install awshelper或{},具体取决于您的设置。 您应该使用root/sudo用户全局安装它

您可以使用环境变量来指定配置文件: AWS_PROFILE=mytest awshelper <command>
awshelper --profile mytest <command>
awshelper --profile=mytest <command>
在任何情况下,都需要一个命名的概要文件(至少现在是这样)

在某些情况下,您可能具有SSO会话,但不是有效的aws cli凭据缓存文件, 因为这些是在刷新sso凭据后运行第一个aws cli命令时生成的。 awshelper尝试对此保持智能,并在需要时运行awscli命令来刷新缓存。 它试图清楚地打印出正在发生的事情,以及在出现错误的情况下,您需要做什么。

如果您是awslogs的粉丝,现在可以使用awshelper来运行它:
AWS_PROFILE=mytest awshelper awslogs groups --aws-region eu-central-1
…或eksctl
AWS_PROFILE=mytest awshelper eksctl create cluster -f eksfargate.yml

其他环境变量

如果运行需要确定是否使用awshelper执行的脚本,可以使用以下环境变量来确定: AWSHELPER_ENABLED的值为YESAWSHELPER_PROFILE将被设置为使用AWS_PROFILE--profile参数配置的任何配置文件。

与外部基于进程的凭据集成

一些AWS工具,如AWS cli,支持“使用外部流程获取凭证”, 描述如下:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html。 awshelper可以充当外部进程。在这种模式下,不是将环境变量注入包装好的进程, 它将在调用时将必要的json结构输出到std。要使用此模式,请按如下方式运行awshelper: AWS_PROFILE=mytest EXTERNAL_PROCESS_MODE=true awshelper 建议的使用方法是将以下内容添加到/.aws/config文件中:

[profile myprofile]
region = eu-central-1
credential_process = /home/trond/bin/awshelper_prochelper.sh

然后这个bash文件看起来像这样:

^{pr2}$

我不太确定awscli如何处理 使用添加了credential_process语句的概要文件调用aws configure sso, 所以用这个来冒险吧!在使用各种工具时也可能会遇到问题- 我用基于javascript的serverless工具进行了快速测试,似乎在那里不起作用。 您的里程数可能会有所不同

集成.env文件

在从IDE调试东西时,可能很难使用包装器进程,例如awshelper。 为了支持这种类型的工作流,awshelper可以将凭证注入.env文件中,大多数现代IDE在启动项目时都可以读取该文件并将其用作环境变量的源。 为此,只需运行如下awshelper: AWS_PROFILE=mytest DOTENV_FILE_MODE=true awshelper。您需要在.env文件存在(或应该创建)的目录中运行awshelper。将保留.env文件中的任何现有值,仅更新必需的AWS凭据值。

局限性

  • 需要一个AWS配置文件名-可以使用环境变量或参数指定。如果两者都指定,则参数“wins”。在
  • 它只适用于配置了aws configure sso的配置文件。如果你指向一个带有常规访问密钥/密码的配置文件,它将不存在里克郡。在

使用docker进行测试:

docker run -it -v ~/.aws:/root/.aws:ro ubuntu 那就跑吧

apt-get update && apt-get install python3-pip
pip3 install awshelper 
AWS_PROFILE=mytest awshelper <my command>

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

推荐PyPI第三方库


热门话题
用于限制返回字符串大小的java<bean:write>标记   java将值传递给内部类方法?   数组无法在Java中使用for循环获取所有JSONObject   java中的StringTokenizer需要帮助   java如何在运行时在方法中自动连接类   java通过setter或构造函数分配多个字段   java JPA OneToMany ManyTone   java无法解析类org。贾布拉斯。双矩阵   java如何使用Rest-Assured从以下Json响应获取NetworkID   如果类具有“org”字段,则java@Slf4j生成“无法引用非静态变量org”   swing Java jform前景色未显示   java向kafka事件订阅rest api   java为什么我的数组会出现NullPointerException?   java通过JavaMail从Exchange server读取Zip文件后提取Zip文件的内容   Java中的字符串值舍入   java如何解析单个变量中的每个字符串   带有ListView头的java ListView   java输入流无限循环   java Grails在Spring Boot中的BootStrap#init等价物?