我正在使用AWS CLI v2创建配置文件,并在我的计算机上通过sso登录AWS。然后我尝试使用paws包通过R访问存储在AWS Athena上的数据库中的数据。
我想我已经正确设置了配置文件,但是当我尝试在Athena中列出数据目录时,我得到一条错误消息:“加载SSO令牌时出错:myprof的令牌不存在”
在AWS CLI v2(在Windows上)中,我运行aws configure sso
并按照AWS documentation on configuring SSO中所述设置配置文件。
在这样做之后,我的配置文件看起来像这样:
[profile myprof]
sso_session = myprof
sso_account_id = 123456789012
sso_role_name = AWSAdministratorAccess
region = us-east-2
output = json
[sso-session myprof]
sso_start_url = https://mycompany.awsapps.com/start#/
sso_region = us-east-2
sso_registration_scopes = sso:account:access
字符串
在这个过程中,我的Web浏览器打开,我确认命令行中显示的代码。
在R中,我有这样的代码,如使用AWS单点登录和connecting to Athena的paws文档中所述:
library(paws)
Sys.setenv(AWS_PROFILE = 'myprof',AWS_REGION = 'us-east-2')
svc = athena()
svc$list_data_catalogs(options("paws.log_level" = 3L))
型
当我运行它时,我得到这样的结果:
INFO [2023-11-10 08:20:45.468]: Unable to locate credentials file
Error: Error loading SSO Token: Token for myprof does not exist
型
根据我从paws文档中了解到的情况,如果我使用sso(不像this question),我不需要凭据文件。想知道是否有什么地方我做错了,或者是否有一个设置我需要检查才能使其工作?不确定问题是否在我正在做的事情中,或者与paws或IAM设置有关。
2条答案
按热度按时间lmyy7pcs1#
当使用SSO时,您需要使用aws登录来获取临时凭证。
字符串
注意:这与boto3的工作方式类似:How to use the AWS Python SDK while connecting via SSO credentials
型
注意:你不需要设置环境变量,因为你已经设置了你的
.aws/config
文件。你可以简单地在athena连接中设置配置文件。或者,您可以使用构建在
paws
上的noctua来给予DBI接口。型
我希望这能帮助
zzzyeukh2#
我发现问题出在我的系统环境设置上。
我使用
traceback()
函数查看Error: Error loading SSO Token: Token for myprof does not exist
来自何处,然后发现它来自paws
中的sso_credential_process
函数。我能够找到该函数here的详细信息。该函数引用了系统环境变量
HOMEDRIVE
和HOMEPATH
。我的设置不正确,无法将函数指向sso缓存,因此它无法找到凭据。一旦我使用Sys.setenv(HOMEDRIVE = 'C:',HOMEPATH = 'Users/MYPROF')
更新了这些变量,一切都开始正常工作。