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

如何将AzureML自动生成的作业名称传递给定时Pipeline?

解决AzureML定时Pipeline传递自动生成作业名称的问题

方法1:直接使用AzureML内置环境变量

AzureML在作业运行时会自动注入AZUREML_RUN_ID环境变量,这个变量的值就是平台自动生成的作业名称(即运行ID)。你可以直接在CommandStep的命令中引用这个环境变量:

修改你的Pipeline创建代码:

step = CommandStep(command="myscript.sh --job-name=$AZUREML_RUN_ID")
pipeline = Pipeline(workspace, [step])
published_pipeline = pipeline.publish(name='my pipeline')
schedule = Schedule.create(workspace=workspace, pipeline_id=published_pipeline.id, ...)

之后在myscript.sh里就能通过传入的--job-name参数拿到作业名称,也可以直接在脚本内读取环境变量:

# 在myscript.sh中直接读取环境变量
CURRENT_JOB_NAME=$AZUREML_RUN_ID
echo "当前运行的作业名称:$CURRENT_JOB_NAME"

方法2:通过Pipeline参数结合RunContext传递(适合Python脚本场景)

如果你的处理逻辑是Python脚本,可以通过Pipeline参数+RunContext的方式传递作业名称:

  1. 定义Pipeline参数:
from azureml.pipeline.core import PipelineParameter

job_name_param = PipelineParameter(name="job_name", default_value="temp_job")
  1. 关联参数到CommandStep:
step = CommandStep(
    command="python myscript.py --job-name={}".format(job_name_param),
    parameters={"job_name": job_name_param}
)
  1. 在Python脚本中获取作业名称:
# myscript.py
from azureml.core.run import Run
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--job-name", type=str)
args = parser.parse_args()

# 也可以直接通过RunContext获取作业ID(和自动生成的作业名称一致)
run = Run.get_context()
job_name = run.id
print("作业名称:", job_name)

两种方法中,方法1更适合Shell脚本场景,无需额外代码修改就能直接获取作业名称,是定时Pipeline场景下最便捷的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:15:02