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

使用AWS CLI v2 SSO在R中通过paws连接Athena遇令牌缺失错误

解决paws包访问Athena时的SSO Token不存在问题

核心问题原因

你遇到的Error loading SSO Token: Token for myprof does not exist错误,本质是本地没有缓存有效的AWS SSO登录令牌——aws configure sso仅完成了配置文件的创建,并未实际获取并缓存登录令牌,而paws依赖这个本地缓存的令牌完成身份验证。

分步解决方案

1. 通过AWS CLI完成SSO登录,生成令牌缓存

打开Windows命令提示符,执行以下命令完成SSO登录:

aws sso login --profile myprof

执行后浏览器会再次打开,完成身份验证后,AWS会将令牌缓存到%USERPROFILE%\.aws\sso\cache目录下的JSON文件中。

2. 验证CLI身份是否正常

先通过AWS CLI测试是否能正常访问Athena,确认令牌有效:

aws athena list-data-catalogs --profile myprof

如果能正常返回数据目录列表,说明令牌和权限没问题,再继续排查R端的问题。

3. 清理R中干扰SSO的环境变量

确保R环境中没有设置硬编码的AWS凭证(这些会覆盖SSO的身份验证流程):

# 检查是否存在硬编码凭证
Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"))

# 如果有值,清除这些环境变量
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")

4. 更新paws到最新版本

旧版本的paws可能对AWS SSO Session的支持存在缺陷,执行以下命令更新:

install.packages("paws")

5. 修正R代码的日志级别设置

你原代码中日志级别设置的位置错误,正确的写法是先全局设置日志级别,再创建Athena客户端:

library(paws)
# 设置环境变量
Sys.setenv(AWS_PROFILE = 'myprof', AWS_REGION = 'us-east-2')
# 全局设置paws日志级别
options(paws.log_level = 3L)
# 创建Athena客户端并调用接口
svc <- athena()
svc$list_data_catalogs()

额外排查点

  • 确认%USERPROFILE%\.aws\config文件中的配置无拼写错误:比如sso_session名称和[sso-session myprof]块的名称一致,sso_account_id、sso_role_name准确无误。
  • 检查IAM角色权限:如果CLI执行aws athena list-data-catalogs失败,确认AWSAdministratorAccess角色是否包含athena:ListDataCatalogs权限(管理员权限默认包含该权限)。

内容的提问来源于stack exchange,提问作者Drewby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:02:30