设置配置选项

第一次运行 Airflow 时,它会在你的 $AIRFLOW_HOME 目录(默认是 ~/airflow)中创建一个名为 airflow.cfg 的文件。这样做是为了方便“玩转”Airflow 配置。

但是,对于生产环境,建议使用命令行生成配置。

airflow config list --defaults

此命令会生成输出,你可以将其复制到配置文件中并进行编辑。

它将包含所有默认配置选项及示例,并以注释的形式呈现,这样你只需取消注释并修改想要更改的选项。通过这种方式,你可以轻松追踪所有已从默认值修改的配置选项,并在 Airflow 新版本发布时轻松升级安装,自动使用已更改的默认值。

你可以将其重定向到你的配置文件并进行编辑。

airflow config list --defaults > "${AIRFLOW_HOME}/airflow.cfg"

你也可以使用以下格式通过环境变量设置选项: AIRFLOW__{SECTION}__{KEY}(注意双下划线)。

例如,元数据数据库的连接字符串可以在 airflow.cfg 中这样设置。

[database]
sql_alchemy_conn = my_conn_string

或通过创建相应的环境变量。

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string

请注意,当节名称中包含点(.)时,设置环境变量时必须将其替换为下划线。例如,假设的节 providers.some_provider

[providers.some_provider]
this_param = true
export AIRFLOW__PROVIDERS_SOME_PROVIDER__THIS_PARAM=true

你也可以在运行时通过在键后添加 _cmd 来获取连接字符串,如下所示。

[database]
sql_alchemy_conn_cmd = bash_command_to_run

你也可以在运行时通过在键后添加 _secret 来获取连接字符串,如下所示。

[database]
sql_alchemy_conn_secret = sql_alchemy_conn
# You can also add a nested path
# example:
# sql_alchemy_conn_secret = database/sql_alchemy_conn

这将从密钥后端(例如 Hashicorp Vault)获取配置选项。更多细节请参见 密钥后端

以下配置选项支持 _cmd_secret 形式。

  • sql_alchemy_conn[database]

  • fernet_key[core]

  • broker_url[celery]

  • flower_basic_auth[celery]

  • result_backend[celery]

  • password[atlas]

  • smtp_password[smtp]

  • secret_key[api]

`_cmd` 配置选项也可以像普通配置选项一样通过相应的环境变量进行设置。例如:

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD=bash_command_to_run

类似地,`_secret` 配置选项也可以通过相应的环境变量进行设置。例如:

export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET=sql_alchemy_conn

注意

配置选项必须遵循密钥后端中定义的配置前缀命名约定。这意味着 sql_alchemy_conn 并未使用连接前缀,而是使用配置前缀。例如,它应命名为 airflow/config/sql_alchemy_conn

这样做的目的在于不在机器上以明文文件形式存储密码。

所有配置选项的通用优先级顺序如下:

  1. 通过环境变量设置(AIRFLOW__DATABASE__SQL_ALCHEMY_CONN

  2. 通过命令环境变量设置(AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD

  3. 通过密钥环境变量设置(AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET

  4. airflow.cfg 中设置

  5. airflow.cfg 中使用命令

  6. airflow.cfg 中使用密钥

  7. Airflow 的内置默认值

注意

对于 Airflow 版本 >= 2.2.1 且 < 2.3.0,Airflow 的内置默认值在某些情况下会优先于 airflow.cfg 中的命令和密钥。

你可以使用 airflow config list 命令查看当前配置。

如果只想查看单个选项的值,可以使用 airflow config get-value 命令,如下例所示。

$ airflow config get-value core executor
LocalExecutor

注意

欲了解更多配置选项信息,请参见 配置参考

注意

关于 Python 和 Airflow 如何管理模块的详细信息,请参见 模块管理

注意

不同的 Airflow 组件可能需要不同的配置参数。为了提高安全性,请只在需要的组件上限制敏感配置,而不是在所有组件之间共享所有配置。有些值必须在特定组件之间保持一致——例如,JWT 签名密钥必须在生成和验证令牌的组件之间匹配。然而,像数据库连接字符串、Fernet 密钥以及密钥后端凭证等敏感参数应仅提供给实际需要它们的组件。

对于安全敏感的部署,请通过针对单个组件的环境变量传递配置值。有关限制配置参数的详细指南,请参见 Airflow 安全模型

确保运行 Airflow 组件的所有机器时间同步(例如使用 ntpd),否则在访问日志或进行 API 调用时可能会出现“forbidden”错误。

配置本地设置

某些 Airflow 配置需要通过本地设置进行配置,因为它们需要在 Airflow 初始化时修改执行的代码。通常在详细文档中会说明可以在哪里配置这些本地设置——通常在 airflow_local_settings.py 文件中完成。

你应当创建一个 airflow_local_settings.py 文件,并将其放置在 sys.path 中的某个目录,或放在 $AIRFLOW_HOME/config 文件夹下。(Airflow 在初始化时会将 $AIRFLOW_HOME/config 加入 sys.path)从 Airflow 2.10.1 开始,$AIRFLOW_HOME/dags 文件夹在初始化时不再被加入 sys.path,因此该文件夹中的本地设置将不会被导入。请确保 airflow_local_settings.py 位于初始化期间属于 sys.path 的路径中,例如 $AIRFLOW_HOME/config。有关此更改的更多背景,请参见 邮件列表公告

这里可以看到此类本地设置的示例。

你可以通过这种方式配置的示例设置

此条目是否有帮助?