本地文件系统密钥后端¶
此后端在以下用例中特别有用
开发:它确保所有终端窗口之间的数据同步(与数据库相同),同时值在数据库重启后仍然保留(与环境变量相同)
Kubernetes:它允许您将密钥存储在 Kubernetes 密钥中,或者您可以使用 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 或连接对象。任何额外的 JSON 参数都可以使用 extra_dejson
和 extra
等键提供。键 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:[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
。
该文件可以定义为 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