OneLake 和 Azure Data Lake Storage (ADLS) Gen2 API 同位

OneLake 支援與 Azure Data Lake Storage (ADLS) Gen2 相同的 API,讓使用者能夠透過目前已使用的工具,在 OneLake 中讀取、寫入及管理其資料。 因為 OneLake 是受控的邏輯資料湖,所以部分功能的管理方式與 Azure 儲存體 不同,而且 OneLake 不支援所有行為。 此頁面會詳述這些差異,包括 OneLake 受管理的資料夾、API 差異,以及開放原始碼相容性。

受控 OneLake 資料夾

Fabric 租用戶中的工作區和資料項目會定義 OneLake 的結構。 透過 Fabric 體驗管理工作區和項目 - OneLake 不支援透過 ADLS Gen2 API 建立、更新或刪除工作區或項目。 因為您必須在 Fabric 系統管理員入口網站中變更租用戶和工作區,所以 OneLake 只允許在工作區 (容器) 層級和租用戶 (帳戶) 層級進行 HEAD 呼叫。

OneLake 也會針對 Fabric 項目強制設定資料夾結構,保護項目及其受管理的子資料夾,避免透過 ADLS Gen2 API 進行建立、刪除或重新命名動作。 Fabric 受管理的資料夾包括項目中的最上層資料夾 (例如 /MyLakehouse.lakehouse),以及其中第一層的資料夾 (例如 /MyLakehouse.lakehouse/Files/MyLakehouse.lakehouse/Tables)。

您可以在這些受管理的資料夾內建立的任何資料夾或檔案上執行 CRUD 作業,並在工作區和項目資料夾上執行唯讀作業。

未支援的要求標頭和參數

即使在使用者建立的檔案和資料夾中,OneLake 也會透過ADLS Gen2 API 限制部分 Fabric 管理作業。 您必須使用 Fabric 體驗來更新權限或編輯項目和工作區,而 Fabric 會管理其他選項 (例如存取層)。

OneLake 幾乎接受與 ADLS Gen2 相同的所有標頭,只忽略與 OneLake 上未許可動作相關的部分標頭。 因為這些標頭不會改變整個呼叫的行為,所以 OneLake 會忽略禁用的標頭,並在新的 'x-ms-rejected-headers' 回應標頭中傳回這些標頭,並允許其餘的呼叫。 例如,因為 Fabric 和 OneLake 沒有與 Azure 儲存體相同的擁有使用者概念,所以 OneLake 會忽略 PUT 呼叫中的 'x-ms-owner' 參數。

因為查詢參數會變更整個呼叫的行為,所以 OneLake 會拒絕包含未允許查詢參數的要求。 例如,因為 OneLake 絕不支援透過 Azure 儲存體 API 設定存取控制,所以使用 'setAccessControl' 參數的 UPDATE 呼叫會遭到封鎖。

OneLake 不允許下列行為及其相關聯的要求標頭和 URI 參數:

  • 設定存取控制
    • URI 參數:
      • 動作:setAccessControl (要求已遭拒絕)
      • 動作:setAccessControlRecursive (要求已遭拒絕)
    • 要求標頭:
      • x-ms-owner (標頭遭忽略)
      • x-ms-group (標頭遭忽略)
      • x-ms-permissions (標頭遭忽略)
      • x-ms-group (標頭遭忽略)
      • x-ms-acls (標頭遭忽略)
  • 設定加密範圍
    • 要求標頭:
      • x-ms-encryption-key (標頭遭忽略)
      • x-ms-encryption-key (標頭遭忽略)
      • x-ms-encryption-algorithm:AES256 (標頭遭忽略)
  • 設定存取層
    • 要求標頭:
      • x-ms-access-tier (標頭遭忽略)

回應標頭差異

因為 OneLake 使用與 ADLS Gen2 不同的權限模型,所以會以不同的方式處理與權限相關的回應標頭:

  • 因為 OneLake 沒有擁有使用者或群組,所以 'x-ms-owner' 和 'x-ms-group' 一律會傳回 '$superuser'
  • 因為 OneLake 不擁有使用者、群組或公用存取權限,所以 'x-ms-permissions' 一律會傳回 '---------'
  • 'x-ms-acl' 會以 'rwx' 格式傳回讓呼叫使用者轉換成 POSIX 存取控制清單 (ACL) 的 Fabric 權限

開放原始碼整合

因為 OneLake 支援與 ADLS Gen2 相同的 API,所以許多與 ADLS Gen2 相容的開放原始碼程式庫和套件可與 OneLake 順暢地搭配運作。 其他程式庫可能需要小規模更新,才能因應 OneLake 端點或其他相容性問題。 由於最近的變更,下列程式庫已確認與 OneLake 相容。 這份清單並不完整:

範例

列出工作區中的項目

GET https://onelake.dfs.fabric.microsoft.com/myWorkspace?resource=filesystem&recursive=false

在 Lakehouse 內建立資料夾

PUT https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/newFolder/?resource=directory