【发布时间】:2021-03-24 15:32:17
【问题描述】:
我在 /etc/sysconfig/airflow 中配置了环境变量
PASSWORD=pass123
我希望能够在 BashOperator 的 Bash 命令中使用它,这样密码就不会在 Airflow UI 或日志中显示。然后该变量将在 DAG 任务中使用,如下所示。
con = 'username/$PASSWORD@//ex01-db.mybiz.com:1521/dwh'
sqlcl_cmd = f"""/oracle/sqlcl/bin/sql -s {con} > /data/tmp/extract.csv <<EOF
SET SQLFORMAT CSV
SET FEEDBACK OFF
SET TERMOUT OFF
SET ECHO OFF
SELECT * FROM ORDER.DAILY_SALES;
EXIT
EOF
"""
BashOperator(
task_id = 'extract_order',
bash_command = sqlcl_cmd,
dag = dag
)
但是,观察到变量$PASSWORD 没有被 Bash 扩展,导致错误。如何在 BashOperator 中正确使用环境变量传递给bash_command。
【问题讨论】:
-
您可能需要在分配
con='...'(第一行代码)中删除=运算符周围的空格,并在脚本中写入${con}而不是{con}。跨度> -
如果您使用 systemd 运行,stackoverflow.com/questions/47195896/…?如果你没有运行 systemd,airflow.apache.org/docs/apache-airflow/stable/howto/…?这有帮助吗?
-
@Emma 将隐藏代码的 Airflow UI 密码,但仍会在日志中显示
-
环境变量将显示在日志中。日志中的屏蔽不是开箱即用的功能,但可以解决。这是解决示例:stackoverflow.com/questions/48380452/…。否则,我想您将需要 aws kms 之类的东西。
-
原来的问题是环境变量没有扩展。如果您想询问有关日志中的屏蔽,建议您编辑标题和描述。