我的 DAG 配置/参数未传递给我的任务

Lon*_*Rob 4 airflow airflow-2.x

我以与这些 Airflow 文档PythonOperator非常相似的方式将一些运行时 DAG 参数/配置传递给 a :

def print_x(x):
    print(f"x is {x}")


with DAG(
    "print_x",
    start_date=pendulum.datetime(2022, 6, 15, tz="UTC"),
    schedule_interval=None,
    catchup=False,
    params={
        "x": Param(42),
    },
) as dag:
    PythonOperator(
        task_id="print_x",
        op_kwargs={
            "x": "{{ params.x }}",
        },
        python_callable=print_x,
    )
Run Code Online (Sandbox Code Playgroud)

但是,当我手动触发 DAG 时,无论我在“触发 DAG”对话框中输入什么内容,我总是得到默认值 (42)。

这里出了什么问题?

注意:在我的特定情况下,我在 AWS Managed Workflows for Apache Airflow (MWAA) 上运行 Airflow 2.2.2,但我认为这不相关。

Lon*_*Rob 6

有一个稍微讨论过的参数,它控制在 DagRun 的任务中使用触发 DAG 时是否传递配置:

在Params 概念页面的底部,它写着(重点是我的):

触发 DAG 时更新参数的能力取决于标志 core.dag_run_conf_overrides_params。将此配置设置为 False 将有效地将默认参数转换为常量。

在 MWAA 上,这似乎是False默认设置。您可以通过“触发 DAG”页面底部收到的消息来查看这是否是问题所在:

由于core.dag_run_conf_overrides_params设置为False,因此在此处传递任何配置都不会覆盖任务参数。

触发 DAG 对话框