您可以使用AWS S3 package:
执行您的阅读:
# These variables should be set in your environment, but you could set them in R:
Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey",
"AWS_SECRET_ACCESS_KEY" = "mysecretkey",
"AWS_DEFAULT_REGION" = "us-east-1")
library("aws.s3")
如果您有一个 R 对象 obj 想要保存到 AWS,然后再阅读:
s3save(obj, bucket = "my_bucket", object = "object")
# and then later
obj <- s3load("object", bucket = "my_bucket")
显然将存储桶名称和文件名(AWS 存储桶中对象的名称)替换为实际值。该软件包还具有相应的s3save 函数。您还可以使用s3saveRDS 和s3readRDS 以RDS 格式保存和加载。
如果你需要读取一个文本文件,那就有点复杂了,因为库的函数 'get_object' 返回一个原始向量,我们必须自己解析它:
raw_data <- get_object('data.csv', 'my_bucket')
# this method to parse the data is copied from the httr library
# substitute encoding from as needed
data <- iconv(readBin(raw_data, character()), from="UTF-8", to="UTF-8")
# now the data can be read by any R function, eg.
read.csv(data)
fread(data)
# All this can be done without temporary objects:
fread(iconv(
readBin(get_object('data.csv', 'my_bucket'), character()),
from="UTF-8", to="UTF-8"))
据我所知,您对“签名 URL”的概念不可用。如果您尝试开发这样的解决方案,请注意:重要的是要考虑将秘密访问密钥存储在源代码中的安全隐患。
关于“签名 url”的另一个问题是对象将存储在内存中。如果工作空间被保存,它将存储在磁盘上。这样的解决方案必须仔细审查安全性。