Amazon web services 如果当前令牌过期,是否有方法告诉aws cli运行命令以获取新会话令牌?

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

在我的工作中,我们的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
这个脚本看起来相当不错,但有一个限制是,它只在调用“aws”可执行文件时工作。如果我有一个Python程序使用
boto3
与AWS交互,它将无法工作

现在我想知道我是否错过了AWS工具中内置的一些东西(
botocore
也许?)可以做到这一点


我是一名Python程序员,所以如果它还没有出现并且被认为是一个好主意,我愿意添加它。但是我想先检查一下它是否已经存在,以及它是否是一件明智的事情。

假设您正在使用
aws sts get federation token
CLI获取令牌,您可以设置带有令牌过期时间戳的文件,并让cron每20分钟运行一次脚本以获取新令牌;将时间戳与当前时间进行比较,如果它们即将过期,则进行更新

到期->(时间戳) 当前凭据过期的日期

如果您使用的是SAML身份验证,您有没有查看一下?否则,看看这个小而整洁的项目,它可以做你们想做的事情。它还可以使用守护进程在过期时自动重新验证