使用Go AWS SDK v2通过SSO认证调用STS接口遇无效令牌错误
解决AWS SDK for Go v2 SSO认证无效令牌问题
以下是几个排查和解决的方向:
清理并重新获取SSO令牌缓存
本地SSO令牌缓存可能已过期或损坏,手动删除缓存目录后重新登录:- Linux/macOS:删除
~/.aws/sso/cache下的所有文件 - Windows:删除
%USERPROFILE%\.aws\sso\cache下的所有文件
执行aws sso login --profile your-profile-name重新登录后,再运行代码。
- Linux/macOS:删除
显式指定区域配置
STS服务对区域有要求,确保代码中加载配置时指定的区域与SSO配置的区域一致,修改配置加载代码:cfg, err := config.LoadDefaultConfig( ctx, config.WithSharedConfigProfile("same-profle-name-as-above"), config.WithRegion("your-sso-region"), // 替换为你的SSO区域,比如us-west-2 )验证凭证来源类型
打印配置中的凭证信息,确认加载的是SSO凭证而非静态Access Key。可以添加代码手动获取凭证并检查:creds, err := cfg.Credentials.Retrieve(ctx) if err != nil { log.Fatal(err) } fmt.Printf("Credential Type: %s\n", creds.Source)如果输出不是
SSO,说明配置加载错误,检查~/.aws/config中的SSO配置项是否正确。升级AWS SDK for Go v2到最新版本
旧版本SDK可能存在SSO认证的已知问题,执行以下命令升级依赖:go get github.com/aws/aws-sdk-go-v2/aws@latest go get github.com/aws/aws-sdk-go-v2/config@latest go get github.com/aws/aws-sdk-go-v2/service/sts@latest升级后重新构建并运行代码。
检查本地AWS配置文件
打开~/.aws/config(Linux/macOS)或%USERPROFILE%\.aws\config(Windows),确认对应profile的配置项:sso_start_url、sso_region、sso_account_id、sso_role_name是否与命令行使用的完全一致- 确保没有其他冲突的配置项(比如同时配置了
aws_access_key_id和SSO参数)
内容的提问来源于stack exchange,提问作者Rob Wilkerson
相关产品推荐
相关产品推荐

