错误:使用 rs_create_table 时未找到 AWS 会话令牌
Posted
技术标签:
【中文标题】错误:使用 rs_create_table 时未找到 AWS 会话令牌【英文标题】:error: AWS session token not found when using rs_create_table 【发布时间】:2019-05-24 19:39:05 【问题描述】:我正在运行以下代码:
install.packages("aws.ec2metadata", repos = c(cloudyr = "http://cloudyr.github.io/drat", getOption("repos")))
install.packages(c('devtools', 'httr', 'aws.s3', 'Rcpp', 'DBI'))
library(RPostgreSQL)
library(redshiftTools)
library(RPostgres)
devtools::install_github("sicarul/redshiftTools")
drv <- dbDriver("PostgreSQL")
pconn_rsql <- dbConnect(drv,
host = "host",
port = port,
user = "user",
password = "password",
dbname = "dbname")
rs_create_table(df = mtcars,
dbcon = conn,
table_name = "table_name",
bucket = "my-bucket",
region = "region",
access_key = "acess-key",
secret_key = "secret-key",
split_files = 4)
dbDisconnect(pconn_rsql)
直到今天早上我更新 R 包时,它一直作为脚本完美运行。我检查了 GitHub 是否有任何关于它的线索,但没有一个有效。 有没有人已经面对它并且可以阐明它?
【问题讨论】:
【参考方案1】:面对类似的问题,您可以做的一种方法是恢复到version 0.3.900
(这是为我工作的那个)。
或者,您可以修复底层source
代码。下载 github 版本并在安装前进行一些更改。
1.脚本internal.R
函数s3ToRedshift
为session
添加else if
条件
if (nchar(iam_role_arn) > 0)
credsStr = sprintf("iam_role '%s'", iam_role_arn)
else if (nchar(session) > 0)
credsStr = sprintf("credentials 'aws_access_key_id=%s;aws_secret_access_key=%s;token=%s'", access_key, secret_key, session)
else
# creds string now includes a token in case it is needed.
credsStr = sprintf("credentials 'aws_access_key_id=%s;aws_secret_access_key=%s'", access_key, secret_key)
2。脚本replace.R
函数rs_replace_table
添加Sys.setenv
在split_files = pmin(split_files, numRows)
之后,添加以下行。
# Set env variables for S3 upload
Sys.setenv(
'AWS_DEFAULT_REGION'=region,
'AWS_ACCESS_KEY_ID'=access_key,
'AWS_SECRET_ACCESS_KEY'=secret_key,
'AWS_IAM_ROLE_ARN'=iam_role_arn
)
所以它看起来像:
split_files = pmin(split_files, numRows)
# Set env variables for S3 upload
Sys.setenv(
'AWS_DEFAULT_REGION'=region,
'AWS_ACCESS_KEY_ID'=access_key,
'AWS_SECRET_ACCESS_KEY'=secret_key,
'AWS_IAM_ROLE_ARN'=iam_role_arn
)
prefix = uploadToS3(df, bucket, split_files)
安装这个,rs_create_table
现在应该可以工作了,不过还没有测试其他功能。
【讨论】:
你好,@Mka,哪个库要降级到 0.3.9 ?我知道它的要求有点过分,但我是 R 的新手,但降级就像:devtolls::install_version('Lib',version='0.3.9') ? 我认为你可以通过install_github
in devtools
来完成。或者您是否尝试过更新源代码?
我更新了源代码!它现在正在工作。谢谢:)以上是关于错误:使用 rs_create_table 时未找到 AWS 会话令牌的主要内容,如果未能解决你的问题,请参考以下文章
使用 asihttprequest 访问 Web 服务时未找到方法错误
使用 AbstractTransactionalSpringContextTests(回滚)时未捕获具有约束检查错误的测试