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

执行Sagemaker Pipeline upsert时遇JumpStart S3上传权限拒绝错误

问题分析

用JumpStart的LightGBM模型搭了个包含预处理、训练、评估、建模型和转换的Pipeline,单独跑每个步骤都没问题,一组合起来执行pipeline.upsert()就报错,具体错误如下:

S3UploadFailedError: Failed to upload /tmp/tmpexrxqr32/new.tar.gz to jumpstart-cache-prod-ap-southeast-1/source-directory-tarballs/lightgbm/inference/classification/v1.1.2/sourcedir.tar.gz: An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied

而且只要创建Model时指定entry_point就触发这个权限错误,把这行注释掉后pipeline.upsert()能成功,但后续的转换任务又失败了。

解决办法

1. 给Pipeline执行角色补充S3权限

你用的Pipeline执行IAM角色,得拥有对jumpstart-cache-prod-ap-southeast-1桶的写入权限——因为指定entry_point时,系统会自动把你的自定义代码包上传到JumpStart的官方缓存桶。给角色添加如下权限策略试试:

{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:CreateMultipartUpload",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": "arn:aws:s3:::jumpstart-cache-prod-ap-southeast-1/*"
}

2. 不要直接修改JumpStart模型的entry_point

JumpStart预构建模型的entry_point是官方适配好的,自定义指定会触发系统往官方缓存桶上传代码,但这个桶通常限制外部写入。换个方式扩展功能:

  • 自己写个推理脚本(比如命名为inference.py),把需要的预处理、后处理逻辑写进去。
  • 创建Model时,用source_dir参数指定存放该脚本的目录,不要直接覆盖entry_point。
  • 确保脚本兼容JumpStart模型的输入输出格式。

3. 排查转换任务的依赖问题

注释entry_point后转换失败,大概率是缺少了自定义推理逻辑,导致模型无法处理转换任务的输入。可以:

  • 检查转换任务的输入数据格式是否符合JumpStart模型的默认要求。
  • 如果确实需要自定义逻辑,就按上面的方法通过source_dir添加脚本,同时保证Pipeline角色能访问脚本所在的S3路径。

4. 用自定义S3桶存储代码包

如果必须使用自定义推理代码,可配置系统将代码包上传到你自己的S3桶,避开JumpStart的官方缓存桶:

  • 创建Model时,用model_data参数指向你自己的模型包,或者通过output_path指定自己的S3路径。

内容的提问来源于stack exchange,提问作者Mai Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:31:13