我推荐CloudyR项目中的包aws.s3
。
安装该软件包:
# stable version
install.packages("aws.s3", repos = c("cloudyr" = "http://cloudyr.github.io/drat"))
# on windows you may need:
install.packages("aws.s3", repos = c("cloudyr" = "http://cloudyr.github.io/drat"), INSTALL_opts = "--no-multiarch")
一旦安装,你可以阅读该文件中,就像这样:
library("aws.s3")
r = aws.s3::get_object(bucket = "bucket",object = "object.csv")
由于@Thomas在评论中提到,如果你知道文件类型,你可以使用read_using()
函数结合fread
或read_csv
或您通常使用的任何R函数。这样在检索数据后保存了解析步骤。
如果您的凭证已经是环境变量,则几乎不需要设置。否则,您可以像这样添加它们:
Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey",
"AWS_SECRET_ACCESS_KEY" = "mysecretkey",
"AWS_DEFAULT_REGION" = "us-east-1",
"AWS_SESSION_TOKEN" = "mytoken")
还支持多个AWS账户。你可以找到CloudyR项目和它的文档在这里:
https://github.com/cloudyr
具体来说,CloudyR的AWS S3 API客户端的网页是在这里找到:
https://github.com/cloudyr/aws.s3
谢谢您的答复。我得到了这个工作。问题是你不能使用变量r。它不是以人类可读的格式。就像我想要一个变量,当文件是S3中的文件的本地文件时,该变量相当于read_csv(文件)。 – Ark
如果您知道对象是csv,那么您可以尝试使用'aws.s3 :: read_using()'而不是'get_object()'来使用通常用于csv的任何导入函数来读取内容。 – Thomas
@Ark我刚刚重新登录并阅读了两条评论。谢谢托马斯给他的指导,如果你不介意的话,我会把这个评论加到我的答案中。我会适当地引用你。 –