重要更新:现在$AWS_CREDENTIAL_EXPIRATION取代了$AWS_SESSION_EXPIRATION。
待办事项:根据上述重要更新修改下面的答案!
你可能需要检查
$AWS_SESSION_EXPIRATION
的值。
echo $AWS_SESSION_EXPIRATION
应该使用
协调世界时(Zulu时间)来提供到期日期,如下所示。
2022-05-17T20:20:40Z
然后需要将您系统上的日期与其进行比较。
下面的说明适用于 macOS,在 Linux 上,您可能需要修改 date
函数的参数
让我们检查当前的系统时间以 Zulu 时间为准:
date -u +'%Y-%m-%dT%H:%M:%SZ'
这应该给出类似的示例:
2022-05-17T20:21:14Z
要自动化事情,您可以创建一个bash函数添加到您的
~/.bashrc
或喜欢的终端主题中。
aws_session_time_left() {
zulu_time_now=$1
aws_session_expiration_epoch="`date -j -u -f '%Y-%m-%dT%H:%M:%SZ' $AWS_SESSION_EXPIRATION '+%s'`"
zulu_time_now_epoch="`date -j -u -f '%Y-%m-%dT%H:%M:%SZ' $zulu_time_now '+%s'`"
if [[ $zulu_time_now < $AWS_SESSION_EXPIRATION ]]; then
secs="`expr $aws_session_expiration_epoch - $zulu_time_now_epoch`"
echo "+`printf '%dh:%02dm:%02ds\n' $((secs/3600)) $((secs%3600/60)) $((secs%60))`"
else
secs="`expr $zulu_time_now_epoch - $aws_session_expiration_epoch`"
echo "-`printf '%dh:%02dm:%02ds\n' $((secs/3600)) $((secs%3600/60)) $((secs%60))`"
fi
}
要查看您的函数结果,您可以运行以下命令:
aws_session_time_left "`date -u +'%Y-%m-%dT%H:%M:%SZ'`"
当您的会话仍然活跃时,可能会给您带来以下类似的内容:
+0h:56m:35s
或者(当会话已过期时)可以告诉您它过期后的时间长度:
-28h:13m:42s
注意时间可以超过24小时
奖励:简化的独立脚本版本,无需参数如下所示
例如,您还可以将其作为独立文件命名为get-aws-session-time-left.sh
#!/bin/bash
if [[ $AWS_SESSION_EXPIRATION != '' ]]; then
zulu_time_now="`date -u +'%Y-%m-%dT%H:%M:%SZ'`"
aws_session_expiration_epoch="`date -j -u -f '%Y-%m-%dT%H:%M:%SZ' $AWS_SESSION_EXPIRATION '+%s'`"
zulu_time_now_epoch="`date -j -u -f '%Y-%m-%dT%H:%M:%SZ' $zulu_time_now '+%s'`"
if [[ $zulu_time_now < $AWS_SESSION_EXPIRATION ]]; then
secs="`expr $aws_session_expiration_epoch - $zulu_time_now_epoch`"
echo "+`printf '%dh:%02dm:%02ds\n' $((secs/3600)) $((secs%3600/60)) $((secs%60))`"
else
secs="`expr $zulu_time_now_epoch - $aws_session_expiration_epoch`"
echo "-`printf '%dh:%02dm:%02ds\n' $((secs/3600)) $((secs%3600/60)) $((secs%60))`"
fi
else
echo "no aws session found"
fi
然后要查询AWS会话过期时间,你只需要运行以下命令:
bash get-aws-session-time-left.sh
---编辑---
重要提示:
关于AWS_SESSION_EXPIRATION的一些信息可以在这里找到。
注意:似乎aws sso login不会设置此环境变量,如果有人能够澄清只有在使用aws-vault时才会出现AWS_SESSION_EXPIRATION,那将很好奇。