在 Airflow 中的嵌套 jinja 模板中传递变量

维尼特·博德瓦尼

我创建了一个变量(来自 Airflow UI):

Key: env_variables
Value: {'xx': 'yy`}

并尝试使用var.json.env_variables.xx内部 bash 运算符进行访问但是“xx”的值是动态的,我从 REST API 传递并使用dag_run.conf['param']dag_run.conf['param']应该返回xx访问它最后我想跑var.json.env_variables.xx如何在 Airflow 中实现内部 bash 操作符?我正在尝试运行以下代码,但它显示 Jinja 语法错误。

task = BashOperator(
        bash_command="export KUBECONFIG=$KUBECONFIG:{{var.json.env_variables.{{dag_run.conf['param']}} }}

我想要的是:它应该获取var.json.env_variables.xx. 我也尝试过使用 params 但没有运气,params.path 返回 None。

task = BashOperator(
        bash_command="export KUBECONFIG=$KUBECONFIG:{{params.path}},
        params: {
           "path":env_variables.get('{{dag_run.conf["param"]}}')
        }

任何形式的帮助都受到高度赞赏。

乔什·菲尔

您不需要{{...}}Jinja 表达式中的额外内容dag_run.conf您还需要字典的典型项目访问。尝试使用这样的模板表达式:

nested_vars = BashOperator(
        task_id="nest_vars",
        bash_command="export KUBECONFIG=$KUBECONFIG:{{ var.json.env_variables[dag_run.conf['param']] }}"
    )

这是将 的触发配置传递{"param": "xx"}给上面的操作员实例时的日志条目

INFO - Running command: ['bash', '-c', 'export KUBECONFIG=$KUBECONFIG:yy']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章