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

如何指定S3子目录存储SageMaker管道运行文件?改步骤名遇报错求助

解决SageMaker管道S3目录组织与步骤名称冲突问题

问题根源

你尝试通过修改ProcessingStep的名称来指定S3子目录,但SageMaker的步骤名称不能包含斜杠/——因为步骤名称会被用于生成管道定义中的属性引用(比如Steps.StepName.ProcessingOutputConfig...),斜杠会破坏这个引用的语法结构,导致解析失败。

正确解决方案

不要修改步骤名称,而是直接在每个ProcessingOutput中指定s3_uri参数,明确输出到默认存储桶的目标子目录。这样既可以实现目录结构化,又能保证步骤名称符合语法要求,不影响后续步骤的属性引用。

修改后的代码示例

import sagemaker
from sagemaker.processing import ProcessingStep, ProcessingOutput

# 获取默认S3存储桶
default_bucket = sagemaker.session.Session().default_bucket()

# 定义子目录前缀(根据你的需求调整层级)
s3_prefix = f"sagemaker/cross-project/{project_name}/{run_datetime}/preprocess"

step_process = ProcessingStep(
    name="CrossPreprocess-Data",  # 恢复为无斜杠的合法步骤名称
    processor=sklearn_processor,
    outputs=[
        ProcessingOutput(
            output_name="train",
            source="/opt/ml/processing/train",
            s3_uri=f"s3://{default_bucket}/{s3_prefix}/train"
        ),
        ProcessingOutput(
            output_name="validation",
            source="/opt/ml/processing/val",
            s3_uri=f"s3://{default_bucket}/{s3_prefix}/validation"
        ),
        ProcessingOutput(
            output_name="test",
            source="/opt/ml/processing/test",
            s3_uri=f"s3://{default_bucket}/{s3_prefix}/test"
        ),
        ProcessingOutput(
            output_name="metafiles",
            source="/opt/ml/processing/metafiles",
            s3_uri=f"s3://{default_bucket}/{s3_prefix}/metafiles"
        ),
    ],
    code=os.path.join(BASE_DIR, "preprocess.py"),
    job_arguments=["--input-data", input_data, "--run-datetime", run_datetime, "--project-name", project_name],
)

关键说明

  • 通过default_bucket()自动获取SageMaker默认存储桶,无需手动硬编码桶名
  • 自定义s3_prefix实现多层目录划分(比如按项目、运行时间、步骤类型归类)
  • 每个输出都指向独立的子目录,保持S3结构清晰有序
  • 步骤名称保持简洁合法,确保后续步骤可以正常引用该步骤的输出(例如step_process.properties.ProcessingOutputConfig.Outputs['train'].S3Output.S3Uri)

内容的提问来源于stack exchange,提问作者Sayuri Iwai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:05:17