无法从Sagemaker R Studio读取AWS S3中的CSV文件求助
解决AWS S3读取CSV到Sagemaker R Studio的404错误
这个ClientError: 404错误的核心是S3客户端找不到你指定的目标对象,下面是具体排查和解决步骤:
1. 验证Bucket名称与文件路径(Key)的准确性
- 确认
bucket_name变量拼写完全正确,S3 Bucket名称区分大小写,需与控制台显示一致 - 检查
path变量格式:要使用Bucket内的相对文件路径,比如s3://my-bucket/datasets/data.csv对应的Key是datasets/data.csv,不要带s3://前缀 - 直接登录AWS S3控制台,手动确认目标Bucket下确实存在该文件,且路径与代码中的
path完全匹配
2. 检查Sagemaker R Studio的IAM权限
- 确保Sagemaker使用的IAM角色拥有
s3:GetObject权限,策略需覆盖目标Bucket及对象路径,示例权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
- 若使用临时凭证或其他认证方式,需确认凭证有效且具备对应访问权限
3. 配置正确的S3区域
- S3 Bucket是区域化资源,若初始化boto3客户端时未指定区域,可能连接到默认区域,导致跨区域查找失败。可在初始化时指定Bucket所在区域:
s3 <- boto3$client('s3', region_name='us-east-1') # 替换为你的Bucket实际区域
4. 改用R原生S3工具包(更适配R环境)
使用aws.s3包直接读取CSV,无需通过reticulate调用boto3,Sagemaker环境下会自动适配IAM角色认证,示例代码:
library(aws.s3) library(readr) # 直接读取S3对象到数据框 df <- read_csv(get_object(object = "datasets/data.csv", bucket = "your-bucket-name"))
内容的提问来源于stack exchange,提问作者Ajees Basha
相关产品推荐
相关产品推荐

