如何检查AWS CLI SSO登录状态?实现脚本自动化按需登录
自动化验证AWS SSO登录状态并按需触发登录
通用可靠的验证方式:使用aws sts get-caller-identity
无需依赖特定AWS服务的权限,通过官方身份验证API直接判断SSO会话有效性,是最稳定的方案。该命令会返回当前登录身份的基本信息,若SSO未登录或会话已过期,会直接返回非0退出码。
Bash脚本示例
#!/bin/bash # 静默执行身份验证检查,忽略所有输出 if ! aws sts get-caller-identity > /dev/null 2>&1; then echo "AWS SSO会话无效,启动登录流程..." aws sso login fi # 执行后续需要权限的业务操作 aws sqs list-queues
可选:检查SSO本地缓存文件(不推荐)
AWS SSO会将会话信息缓存到~/.aws/sso/cache/目录下的JSON文件中,可通过解析文件内的expiresAt字段判断是否过期。但该方式依赖缓存文件格式,官方可能随时调整,稳定性不如API调用。
参考代码片段:
#!/bin/bash CACHE_DIR="$HOME/.aws/sso/cache" SESSION_VALID=false # 遍历缓存文件检查过期时间 for file in "$CACHE_DIR"/*.json; do if [ -f "$file" ]; then EXPIRE_TIME=$(jq -r '.expiresAt' "$file") if [ "$EXPIRE_TIME" != "null" ]; then # 将ISO格式时间转为时间戳,与当前时间对比 EXPIRE_TS=$(date -d "$EXPIRE_TIME" +%s) CURRENT_TS=$(date +%s) if [ "$CURRENT_TS" -lt "$EXPIRE_TS" ]; then SESSION_VALID=true break fi fi fi done if [ "$SESSION_VALID" = false ]; then echo "SSO缓存已过期,触发登录..." aws sso login fi
内容的提问来源于stack exchange,提问作者Cristiano Araujo
相关产品推荐
相关产品推荐

