本地文件系统机密后端

此后端在以下使用案例中特别有用

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

  • Kubernetes:它允许您将机密存储在 Kubernetes 机密 中,或者您可以使用边车容器和 共享卷 同步值

要从本地文件使用变量和连接,请指定 LocalFilesystemBackend 作为 backend[secrets] 部分的 airflow.cfg 中。

可用于 backend_kwargs 的参数

  • variables_file_path:包含变量数据的 file 位置。

  • connections_file_path:包含连接数据的 file 位置。

以下是一个示例配置

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

支持 JSONYAML.env 文件。所有参数都是可选的。如果未传递 file 路径,后端将返回一个空集合。

存储和检索连接

如果你已将 connections_file_path 设置为 /files/my_conn.json,那么后端在查找连接时将读取文件 /files/my_conn.json

该文件可以用 JSONYAMLenv 格式定义。根据格式,数据应保存为 URL 或连接对象。可以使用 extra_dejsonextra 等键提供任何额外的 json 参数。键 extra_dejson 可用于将参数提供为 JSON 对象,而键 extra 可用于 JSON 字符串。键 extraextra_dejson 是互斥的。

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

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

YAML 文件结构类似于 JSON 文件结构。连接 ID 的键值对和一个或多个连接的定义。在此格式中,连接可以定义为 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 文件定义连接。然后,键是连接 ID,值应使用 URI 描述连接。连接 ID 不应重复,它会引发异常。以下是示例文件。

mysql_conn_id=mysql://log:[email protected]:3306/mysqldbrd
google_custom_key=google-cloud-platform://?key_path=%2Fkeys%2Fkey.json

存储和检索变量

如果您已将 variables_file_path 设置为 /files/my_var.json,则后端在查找变量时会读取文件 /files/my_var.json

该文件可以在 JSONYAMLenv 格式中定义。

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

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

YAML 文件结构类似于 JSON 文件结构,其中键包含变量键,值包含变量值。以下是示例 YAML 文件。

VAR_A: some_value
VAR_B: different_value

您还可以使用 .env 文件定义变量。然后,键是变量键,变量应描述变量值。以下是示例文件。

VAR_A=some_value
var_B=different_value

此条目是否有帮助?