You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中从S3加载/保存.Rdata文件并兼容AWS Lambda?

在R中读写S3上的.Rdata文件(兼容AWS Lambda)

前提准备

  • 确保aws.s3包已安装(部署到Lambda时,需将包及其依赖打包为Lambda层或包含在部署包中)
  • 为Lambda执行角色配置对应S3存储桶的权限:
    • 加载文件:s3:GetObject权限
    • 保存文件:s3:PutObject权限
  • Lambda中仅/tmp目录可写,所有临时操作需在此目录进行

1. 加载S3上的.Rdata文件

通过save_object将S3文件下载到Lambda临时目录,再用load加载数据。

代码示例

library(aws.s3)

# 定义目标S3路径
s3_input_path <- "s3://bucket1/rcode/data/input.Rdata"

# 解析S3路径,拆分存储桶和对象键
parse_s3 <- function(path) {
  stripped <- sub("s3://", "", path)
  parts <- strsplit(stripped, "/", fixed = TRUE)[[1]]
  list(bucket = parts[1], key = paste(parts[-1], collapse = "/"))
}
path_info <- parse_s3(s3_input_path)

# 下载到临时目录
temp_file <- file.path("/tmp", basename(path_info$key))
save_object(object = path_info$key, bucket = path_info$bucket, file = temp_file)

# 加载数据
load(temp_file)

说明:

  • Lambda会自动通过执行角色获取AWS凭证,无需手动配置凭证参数
  • 加载后,.Rdata中存储的所有对象会直接进入当前R环境

2. 将数据保存为.Rdata到S3

先把数据保存到Lambda临时目录,再通过put_object上传到指定S3路径。

代码示例

library(aws.s3)

# 假设要保存的数据对象为my_data,定义目标S3路径
s3_output_path <- "s3://bucket1/rcode/data/output.Rdata"
path_info <- parse_s3(s3_output_path)

# 保存数据到临时文件
temp_output <- file.path("/tmp", basename(path_info$key))
save(my_data, file = temp_output)

# 上传到S3
put_object(file = temp_output, object = path_info$key, bucket = path_info$bucket)

说明:

  • save()函数可同时保存多个对象,比如save(obj1, obj2, file = temp_output)
  • 上传完成后可删除临时文件(可选):file.remove(temp_output)

内容的提问来源于stack exchange,提问作者yo wa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:52:49