在 Airflow 的嵌套神社模板中传递变量
Pass variable inside nested jinja template in Airflow
我创建了一个变量(来自 Airflow UI):
Key: env_variables
Value: {'xx': 'yy`}
并尝试使用 bash 运算符中的 var.json.env_variables.xx
进行访问。但是“xx”的值是动态的,这
我从 REST API 传递并使用 dag_run.conf['param']
访问它(dag_run.conf['param']
应该 return 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.path 是 returning 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']
我创建了一个变量(来自 Airflow UI):
Key: env_variables
Value: {'xx': 'yy`}
并尝试使用 bash 运算符中的 var.json.env_variables.xx
进行访问。但是“xx”的值是动态的,这
我从 REST API 传递并使用 dag_run.conf['param']
访问它(dag_run.conf['param']
应该 return 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.path 是 returning 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']