我创建了一个变量(来自 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] 删除。
我来说两句