You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:54:28