提问人:Drewby 提问时间:11/11/2023 更新时间:11/17/2023 访问量:37
如何通过 CLI v2 sso 使用 paws 连接到 R 中的 AWS Athena?
How do I connect to AWS Athena in R using paws via the CLI v2 sso?
问:
我正在使用 AWS CLI v2 创建配置文件并通过计算机上的 sso 登录 AWS。然后,我尝试使用 paws 软件包通过 R 访问存储在 AWS Athena 上的数据库中的数据。
我认为我已经正确设置了配置文件,但是当我尝试在 Athena 中列出数据目录时,我收到一条错误消息:“加载 SSO 令牌时出错:myprof 的令牌不存在”
在 AWS CLI v2(在 Windows 上)中,我按照有关配置 SSO 的 AWS 文档中所述运行并设置配置文件。aws configure 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 Single Sign On 和连接到 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,我不需要凭据文件(与这个问题不同)。想知道我是否做错了什么,或者是否有我需要检查的设置才能使其正常工作?不确定问题出在我正在做的事情上,还是出在爪子上或 IAM 设置上。
答:
使用 SSO 时,您需要使用 aws cli 获取临时凭证。
aws sso login --profile myprof
注意:这类似于 boto3 的工作原理:如何在通过 SSO 凭证连接时使用 AWS Python 开发工具包
library(paws)
client <- athena(config(credentials(profile = "myprof")))
client$list_data_catalogs()
注意:您不需要设置环境变量,因为您已经设置了文件。您只需在 athena 连接中设置配置文件即可。.aws/config
或者,您可以使用内置于 的 noctua 来提供 DBI 接口。paws
library(DBI)
library(noctua)
con <- dbConnect(noctua::athena(), profile_name = "myprof", s3_staging_dir = "s3://mybucket/athena-query")
dbListTables(con)
评论
aws sso login --profile myprof
我发现问题出在我的系统环境设置中。
我用这个函数查看了它的来源,然后发现它来自中的函数。我能够在这里找到该功能的详细信息。traceback()
Error: Error loading SSO Token: Token for myprof does not exist
sso_credential_process
paws
该函数引用系统环境变量和 。我的未正确设置为将函数定向到 sso 缓存,因此它找不到凭据。一旦我更新了这些,一切就开始正常工作。HOMEDRIVE
HOMEPATH
Sys.setenv(HOMEDRIVE = 'C:',HOMEPATH = 'Users/MYPROF')
评论