本地文件系统 Secrets 后端
此后端在以下使用场景中特别有用
开发:它确保所有终端窗口之间的数据同步(与数据库相同),并且在数据库重启后值仍然保留(与环境变量相同)
Kubernetes:它允许您将 secret 存储在 Kubernetes Secrets 中,或者可以使用 sidecar 容器和 共享卷 来同步值
要从本地文件使用变量和连接,请在 airflow.cfg 的 [secrets] 部分将 LocalFilesystemBackend 指定为 backend。
backend_kwargs 可用参数
variables_file_path:变量数据文件位置。connections_file_path:连接数据文件位置。
以下是示例配置
[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_file_path 设置为 /files/my_conn.json,则后端在查找连接时会读取文件 /files/my_conn.json。
文件可以使用 JSON、YAML 或 env 格式定义。根据格式,数据应保存为 URL 或连接对象。可以使用 extra_dejson 与 extra 等键提供额外的 JSON 参数。extra_dejson 键用于以 JSON 对象形式提供参数,而 extra 键用于 JSON 字符串形式。extra 与 extra_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:password@13.1.21.1:3306/mysqldbrd google_custom_key=google-cloud-platform://?key_path=%2Fkeys%2Fkey.json
存储和检索变量
如果您将 variables_file_path 设置为 /files/my_var.json,则后端在查找变量时会读取文件 /files/my_var.json。
文件可以使用 JSON、YAML 或 env 格式定义。
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