SageMaker默认S3桶异常:GUI上传文件在Notebook及控制台不可见
问题排查与解决
核心原因:文件实际上传路径和你预期的不一致
SageMaker Studio通过GUI上传的文件,默认不会直接放到S3桶的根目录下,而是存在和你的Studio环境绑定的专属路径里,比如:s3://<你的默认桶>/sagemaker-studio/<用户配置文件名>/<Domain ID>/<你创建的目录>/
你代码里用的prefix = "folderJustBelowRoot"只指定了目录名,没有包含前面的环境路径,所以list_objects找不到对应内容,S3控制台直接看根目录也看不到文件。
具体解决步骤
1. 确认文件的实际S3路径
在SageMaker Studio的文件浏览器中:
- 右键点击你上传的文件
- 选择「Copy S3 URI」
- 粘贴出来会看到完整路径,比如:
s3://sagemaker-abcdef/sagemaker-studio/user-profile-1/d-abc123xyz/folderJustBelowRoot/test.txt
2. 修正代码中的prefix
从完整S3 URI里提取桶名之后的前缀部分,比如上面的例子,prefix应该设为:
prefix = "sagemaker-studio/user-profile-1/d-abc123xyz/folderJustBelowRoot"
然后重新调用API(推荐用更新的list_objects_v2):
import boto3 import sagemaker sess = sagemaker.Session() bucket = sess.default_bucket() # 替换成你复制的前缀 prefix = "sagemaker-studio/user-profile-1/d-abc123xyz/folderJustBelowRoot" conn = boto3.client('s3') response = conn.list_objects_v2(Bucket=bucket, Prefix=prefix) # 现在应该能看到'Contents'键 print(response.get('Contents', []))
3. 在S3控制台找到文件
- 直接把复制的完整S3 URI粘贴到S3控制台的搜索框,回车就能定位到文件
- 或者手动导航:进入你的默认S3桶 → 打开
sagemaker-studio文件夹 → 逐层进入你的用户配置文件夹、Domain ID文件夹,就能找到你创建的目录和上传的文件
补充说明
S3的list_objects/list_objects_v2 API有个特性:如果指定的Prefix下没有匹配的对象,响应里不会包含Contents键,哪怕HTTP状态码是200(这只代表请求本身成功,不代表有匹配内容)。所以只要修正prefix到正确路径,就能拿到预期的Contents数据。
内容的提问来源于stack exchange,提问作者Kai
相关产品推荐
相关产品推荐

