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

這篇文章有幫助嗎?