本地檔案系統 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