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

R语言arrow包读取公开S3数据集如何设置无签名请求

问题解答

arrow包完全支持对公开S3存储桶发起无签名请求,对应AWS CLI --no-sign-request的配置只需要在创建S3文件系统连接时开启匿名模式即可。

之前代码报错是因为arrow默认访问S3时会自动读取本地存储的AWS凭证给请求签名,访问无需认证的公开存储桶时,签名后的请求反而会被服务端拦截,触发连接错误。

可用实现方式

最稳妥的写法是先单独创建匿名模式的S3文件系统实例,再指向目标数据集路径,这种写法不会影响其他带认证的S3访问操作,所有支持S3功能的arrow版本都兼容:

library(arrow)

# 创建无签名的S3客户端,效果和aws cli加--no-sign-request参数完全一致
s3_client <- S3FileSystem$create(
  anonymous = TRUE,
  region = "us-east-1" # ookla公开性能数据集存储在us-east-1区域,指定区域可减少额外重定向开销
)

# 加载目标parquet数据集
ds <- open_dataset(
  sources = s3_client$path("ookla-open-data/parquet/performance/"),
  partitioning = c("type", "year", "quarter"),
  hive_style = TRUE,
  format = "parquet"
)

如果使用的是8.0.0及以上版本的arrow,也可以不用单独创建S3客户端,直接在open_dataset调用里传入S3连接参数,效果相同:

ds <- open_dataset(
  sources = "s3://ookla-open-data/parquet/performance/",
  partitioning = c("type", "year", "quarter"),
  hive_style = TRUE,
  format = "parquet",
  s3_options = list(anonymous = TRUE, region = "us-east-1")
)

补充:如果运行时还是出现连接类报错,可以检查下本地是否配置了全局AWS访问代理、或者网络是否能正常连通AWS S3服务,这类问题和arrow包本身的配置无关。

内容的提问来源于stack exchange,提问作者Brian Connelly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:36:20