帮助您使用基于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
或{
您可以使用环境变量来指定配置文件:
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
的值为YES
。
AWSHELPER_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>
- 项目
标签: