Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:使用rs_create_表时未找到AWS会话令牌_R_Amazon Redshift - Fatal编程技术网

错误:使用rs_create_表时未找到AWS会话令牌

错误:使用rs_create_表时未找到AWS会话令牌,r,amazon-redshift,R,Amazon Redshift,我正在运行以下代码: 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)

我正在运行以下代码:

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)
install.packages(“aws.ec2metadata”,repos=c(cloudyr=”http://cloudyr.github.io/drat,获取期权(“回购”))
安装包(c('devtools','httr','aws.s3','Rcpp','DBI'))
库(RPostgreSQL)
图书馆(redshiftTools)
图书馆(RPostgres)
devtools::安装github(“sicarul/redshiftools”)

drv面临类似的问题,一种方法是恢复到
版本0.3.900
(这是一个为我工作的版本)

或者,您可以修复底层的
源代码。下载github版本并在安装之前进行一些更改

1。脚本
internal.R
函数
s3ToRedshift
添加
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\u replace\u表
add
Sys.setenv

  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)
  }
split\u files=pmin(split\u 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
devtools
中实现。或者你试过更新源代码吗?我更新了源代码!它正在工作。谢谢:)