2025 年 Airflow 峰会将于 10 月 07-09 日举行。立即注册,获取早鸟票!

本地文件系统 Secrets 后端

这个后端在以下用例中特别有用

  • 开发:它确保所有终端窗口之间的数据同步(与数据库相同),同时在数据库重启后值仍然保留(与环境变量相同)

  • Kubernetes:它允许您将 secrets 存储在 Kubernetes Secrets 中,或者您可以使用 Sidecar 容器和 共享卷 来同步值

要使用本地文件中的 variable 和 connection,请在 `airflow.cfg` 的 `[secrets]` 部分将 LocalFilesystemBackend 指定为 `backend`。

`backend_kwargs` 的可用参数

  • `variables_file_path`:包含 variables 数据的文件位置。

  • `connections_file_path`:包含 connections 数据的文件位置。

以下是一个配置示例

[secrets]
backend = airflow.secrets.local_filesystem.LocalFilesystemBackend
backend_kwargs = {"variables_file_path": "/files/var.json", "connections_file_path": "/files/conn.json"}

支持 `JSON`、`YAML` 和 `.env` 文件。所有参数都是可选的。如果未传递文件路径,则后端返回一个空集合。

存储和检索 Connections

如果您将 `connections_file_path` 设置为 `/files/my_conn.json`,则后端在查找 connections 时将读取文件 `/files/my_conn.json`。

文件可以定义为 `JSON`、`YAML` 或 `env` 格式。根据格式,数据应保存为 URL 或 connection 对象。可以使用 `extra_dejson` 和 `extra` 等键提供任何额外的 JSON 参数。键 `extra_dejson` 可用于将参数作为 JSON 对象提供,而键 `extra` 可用于 JSON 字符串的情况。键 `extra` 和 `extra_dejson` 是互斥的。

JSON 文件必须包含一个对象,其中键包含 connection ID,值包含一个 connection 的定义。connection 可以定义为 URI(字符串)或 JSON 对象。有关将 connection 定义为 URI 的指南,请参阅 生成 connection URI。有关 connection 对象参数的说明,请参阅 Connection。以下是一个示例 JSON 文件。

{
    "CONN_A": "mysql://host_a",
    "CONN_B": {
        "conn_type": "scheme",
        "host": "host",
        "schema": "schema",
        "login": "Login",
        "password": "None",
        "port": "1234"
    }
}

YAML 文件结构类似于 JSON 文件。键值对由 connection ID 和一个或多个 connection 的定义组成。在这种格式中,connection 可以定义为 URI(字符串)或 JSON 对象。

CONN_A: 'mysql://host_a'

CONN_B:
  - 'mysql://host_a'
  - 'mysql://host_b'

CONN_C:
  conn_type: scheme
  host: host
  schema: lschema
  login: Login
  password: None
  port: 1234
  extra_dejson:
    a: b
    nestedblock_dict:
      x: y

您还可以使用 `.env` 文件定义 connections。此时,键是 connection ID,值应使用 URI 描述 connection。connection ID 不应重复,否则将引发异常。以下是一个示例文件。

mysql_conn_id=mysql://log:password@13.1.21.1:3306/mysqldbrd
google_custom_key=google-cloud-platform://?key_path=%2Fkeys%2Fkey.json

存储和检索 Variables

如果您将 `variables_file_path` 设置为 `/files/my_var.json`,则后端在查找 variables 时将读取文件 `/files/my_var.json`。

文件可以定义为 `JSON`、`YAML` 或 `env` 格式。

JSON 文件必须包含一个对象,其中键包含 variable key,值包含 variable value。以下是一个示例 JSON 文件。

{
    "VAR_A": "some_value",
    "var_b": "different_value"
}

YAML 文件结构类似于 JSON,其中键包含 variable key,值包含 variable value。以下是一个示例 YAML 文件。

VAR_A: some_value
VAR_B: different_value

您还可以使用 `.env` 文件定义 variable。此时,键是 variable key,variable 应描述 variable value。以下是一个示例文件。

VAR_A=some_value
var_B=different_value

这篇文章有帮助吗?