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

运行Sagemaker Pipeline的ProcessingStep时如何向Python脚本传递参数

解决方法

ProcessingStep传入的job_arguments会按顺序作为命令行参数传递给你指定的Python脚本,你只需要在params.py中通过Python内置的sys模块读取命令行参数即可,修改后的代码如下:

修改后的params.py代码

# 先导入sys模块读取命令行参数
import sys

def params(input_params):
    details = {"database": input_params[0],
         "table": input_params[1], 
         "catalog": input_params[2], 
         "earliestday": int(input_params[3]), 
         "latestday": int(input_params[4]),
         "s3bucket": input_params[5], 
         "bucketpath": input_params[6]}
    return details

# sys.argv返回的列表第一个元素是当前脚本文件名,从第2个元素开始才是你传入的作业参数
input_params = sys.argv[1:]
output_params = params(input_params)

# 后续可添加你的业务逻辑,比如将output_params写入ProcessingStep配置的输出路径

拓展建议

如果后续参数数量增加、逻辑变复杂,更推荐使用Python标准库的argparse模块解析参数,可读性和可维护性更高,不会因为参数顺序错位导致错误:

  1. 修改params.py的参数解析逻辑:
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--database", type=str)
parser.add_argument("--table", type=str)
parser.add_argument("--catalog", type=str)
parser.add_argument("--earliestday", type=int)
parser.add_argument("--latestday", type=int)
parser.add_argument("--s3bucket", type=str)
parser.add_argument("--bucketpath", type=str)
args = parser.parse_args()

details = {
    "database": args.database,
    "table": args.table,
    "catalog": args.catalog,
    "earliestday": args.earliestday,
    "latestday": args.latestday,
    "s3bucket": args.s3bucket,
    "bucketpath": args.bucketpath
}
  1. 对应修改ProcessingStep的job_arguments为键值对格式:
job_arguments = [
    "--database", "ABC",
    "--table", "SESSION_123",
    "--catalog", "AwsDataCatalog",
    "--earliestday", "5",
    "--latestday", "7",
    "--s3bucket", "mybucket",
    "--bucketpath", "bucket2/tmp/athena_sagemaker"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:24:03