Amazon web services 如果当前令牌过期,是否有方法告诉aws cli运行命令以获取新会话令牌?
在我的工作中,我们的AWS认证与我们的公司登录(SSO)系统集成在一起。换句话说,当我们想要访问AWS时,我们会对公司系统进行身份验证,然后发布AWS会话令牌。令牌在一小时后过期,因此AWS命令经常会因为令牌过期而失败,然后我必须获取一个新令牌,然后重复该命令 这并不可怕,但由于我是一名工程师,我编写了一个“aws”包装脚本,用于检测令牌是否过期,如果过期,它可以运行一个可配置的命令来获取一个新令牌,然后执行给定的命令。以下是脚本:Amazon web services 如果当前令牌过期,是否有方法告诉aws cli运行命令以获取新会话令牌?,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,在我的工作中,我们的AWS认证与我们的公司登录(SSO)系统集成在一起。换句话说,当我们想要访问AWS时,我们会对公司系统进行身份验证,然后发布AWS会话令牌。令牌在一小时后过期,因此AWS命令经常会因为令牌过期而失败,然后我必须获取一个新令牌,然后重复该命令 这并不可怕,但由于我是一名工程师,我编写了一个“aws”包装脚本,用于检测令牌是否过期,如果过期,它可以运行一个可配置的命令来获取一个新令牌,然后执行给定的命令。以下是脚本: #!/bin/bash AWS=${AWS:-"/usr/l
#!/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
这个脚本看起来相当不错,但有一个限制是,它只在调用“aws”可执行文件时工作。如果我有一个Python程序使用boto3
与AWS交互,它将无法工作
现在我想知道我是否错过了AWS工具中内置的一些东西(botocore
也许?)可以做到这一点
我是一名Python程序员,所以如果它还没有出现并且被认为是一个好主意,我愿意添加它。但是我想先检查一下它是否已经存在,以及它是否是一件明智的事情。假设您正在使用
aws sts get federation token
CLI获取令牌,您可以设置带有令牌过期时间戳的文件,并让cron每20分钟运行一次脚本以获取新令牌;将时间戳与当前时间进行比较,如果它们即将过期,则进行更新
到期->(时间戳)
当前凭据过期的日期
如果您使用的是SAML身份验证,您有没有查看一下?否则,看看这个小而整洁的项目,它可以做你们想做的事情。它还可以使用守护进程在过期时自动重新验证