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

如何在AWS Glue作业脚本中获取GlueJobOperator的script_args参数

问题描述

我有一个使用GlueJobOperator模块触发AWS Glue作业的Airflow DAG,目前运行正常。现在我尝试通过GlueJobOperator的script_args参数传递输入参数,代码如下:

script_arguments = {
        "start_date": "2024-01-31",
        "end_date": "2024-02-02"
    }

glue_job_task = GlueJobOperator(
        task_id="trigger_glue_job",
        job_name="attribution_dag_test",
        iam_role_name="AWSGlueServiceRole",
        s3_bucket="aws-glue-assets-191965435652-us-east-1",
        script_args=script_arguments
    )

我认为应该可以在Glue作业脚本中访问这些参数,尝试用getResolvedOptions获取:

args = getResolvedOptions(sys.argv, ["JOB_NAME", "start_date", "end_date"])

但没有成功,请问如何访问这些script_args参数?

解决方案

问题出在Airflow的GlueJobOperator传递script_args时,参数名需要以--作为前缀,而Glue脚本中使用getResolvedOptions时不需要带前缀。

修改Airflow DAG中的参数定义

将script_arguments的键名加上--前缀:

script_arguments = {
        "--start_date": "2024-01-31",
        "--end_date": "2024-02-02"
    }

glue_job_task = GlueJobOperator(
        task_id="trigger_glue_job",
        job_name="attribution_dag_test",
        iam_role_name="AWSGlueServiceRole",
        s3_bucket="aws-glue-assets-191965435652-us-east-1",
        script_args=script_arguments
    )

Glue脚本中保持原有写法不变

继续使用不带前缀的参数名获取:

import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["JOB_NAME", "start_date", "end_date"])

# 访问参数示例
start_date = args["start_date"]
end_date = args["end_date"]

原理说明

Glue作业的命令行参数要求以--开头,Airflow的GlueJobOperator会直接将script_args中的键值对作为命令行参数传递给Glue作业。如果没有加--前缀,Glue无法识别这些自定义参数,因此无法通过getResolvedOptions获取到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:14:52