本機檔案系統密鑰後端

此後端在以下使用案例中特別有用

  • 開發:它確保所有終端機視窗之間 (與資料庫相同) 的資料同步,同時值在資料庫重新啟動後 (與環境變數相同) 仍會保留

  • Kubernetes:它允許您將密鑰儲存在 Kubernetes Secrets 中,或者您可以使用 sidecar 容器和共用卷來同步值

若要使用本機檔案中的變數和連線,請在 [secrets] 區段的 airflow.cfg 中,將 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"}

支援 JSONYAML.env 檔案。所有參數都是選填的。如果未傳遞檔案路徑,後端會傳回空的集合。

儲存和檢索連線

如果您已將 connections_file_path 設定為 /files/my_conn.json,則後端會在尋找連線時讀取 /files/my_conn.json 檔案。

檔案可以使用 JSONYAMLenv 格式定義。根據格式,資料應儲存為 URL 或連線物件。任何額外的 json 參數都可以使用類似 extra_dejsonextra 的金鑰來提供。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: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 檔案。

檔案可以使用 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

這個條目是否有幫助?