Mar*_*itz 6 amazon-web-services aws-cli
在我的工作中,我们的 AWS 身份验证与我们的企业登录 (SSO) 系统集成。换句话说,当我们想要访问 AWS 时,我们会执行一些操作,对我们的公司系统进行身份验证,然后颁发 AWS 会话令牌。令牌会在一小时后过期,因此 AWS 命令经常会因为令牌过期而失败,然后我必须获取新令牌,然后重复该命令。
这并不可怕,但由于我是一名工程师,我编写了一个“aws”包装脚本,用于检测令牌是否过期,如果过期,它可以运行可配置命令来获取新令牌,然后执行给出的命令。这是脚本:
#!/bin/bash
AWS=${AWS:-"/usr/local/bin/aws"}
if [ -z "$AWS_FORCE_GET_TOKEN" ] && ${AWS} sts get-caller-identity > /dev/null 2>&1; then
${AWS} "$@"
else
CMD=$($AWS configure get get_token_command)
echo "Error doing \"${AWS} sts get-caller-identity\"; Going to try running \"$CMD\"" > /dev/tty
if $CMD 1>&2; then
${AWS} "$@"
else
echo "Failed to renew token with \"$CMD\"" 1>&2
fi
fi
Run Code Online (Sandbox Code Playgroud)
该脚本看起来相当不错,但一个限制是它仅在调用“aws”可执行文件时才有效。boto3
如果我有一个用于与 AWS 交互的Python 程序,那么它就不起作用。
现在我想知道我是否错过了 AWS 工具中内置的某些功能(botocore
也许?)可以做到这一点?
我是一名 Python 程序员,所以如果它尚不存在并且被认为是一个好主意,我愿意添加它。但我想先检查一下它是否已经存在以及这是否是明智之举。
假设您使用aws sts get-federation-token
CLI 来获取令牌,您可以使用令牌过期时间戳设置文件,并让 cron 运行脚本以每 20 分钟获取新令牌;将时间戳与当前时间进行比较,并更新它们是否即将过期。
到期 ->(时间戳)当前凭证到期的日期。
http://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html