OneLake 和 Azure Data Lake Storage (ADLS) API 同位
OneLake 支援與 Azure Data Lake Storage (ADLS) 和 Azure Blob 記憶體相同的 API,讓使用者能夠使用他們目前使用的工具,在 OneLake 中讀取、寫入及管理其數據。 因為 OneLake 是受控的邏輯資料湖,所以部分功能的管理方式與 Azure 儲存體 不同,而且 OneLake 不支援所有行為。 此頁面會詳述這些差異,包括 OneLake 受管理的資料夾、API 差異,以及開放原始碼相容性。
受控 OneLake 資料夾
Fabric 租用戶中的工作區和資料項目會定義 OneLake 的結構。 管理工作區和專案是透過網狀架構體驗完成的 - OneLake 不支援透過 ADLS API 建立、更新或刪除工作區或專案。 因為您必須在 Fabric 系統管理員入口網站中變更租用戶和工作區,所以 OneLake 只允許在工作區 (容器) 層級和租用戶 (帳戶) 層級進行 HEAD 呼叫。
OneLake 也會針對 Fabric 專案強制執行資料夾結構,保護專案及其受管理子資料夾,避免透過ADLS和 Blob API 建立、刪除或重新命名。 Fabric 受管理的資料夾包括項目中的最上層資料夾 (例如 /MyLakehouse.lakehouse),以及其中第一層的資料夾 (例如 /MyLakehouse.lakehouse/Files 和 /MyLakehouse.lakehouse/Tables)。
您可以在這些受管理的資料夾內建立的任何資料夾或檔案上執行 CRUD 作業,並在工作區和項目資料夾上執行唯讀作業。
未支援的要求標頭和參數
即使在使用者建立的檔案和資料夾中,OneLake 也會透過ADLS API限制一些網狀架構管理作業。 您必須使用 Fabric 體驗來更新權限或編輯項目和工作區,而 Fabric 會管理其他選項 (例如存取層)。
OneLake 幾乎接受與 Storage 相同的所有標頭,只忽略與 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 (標頭遭忽略)
- URI 參數:
- 設定加密範圍
- 要求標頭:
- x-ms-encryption-key (標頭遭忽略)
- x-ms-encryption-key (標頭遭忽略)
- x-ms-encryption-algorithm:AES256 (標頭遭忽略)
- 要求標頭:
- 設定存取層
- 要求標頭:
- x-ms-access-tier (標頭遭忽略)
- 要求標頭:
回應標頭差異
由於 OneLake 使用與 ADLS 不同的許可權模型,因此與許可權相關的響應標頭會以不同的方式處理:
- 因為 OneLake 沒有擁有使用者或群組,所以 'x-ms-owner' 和 'x-ms-group' 一律會傳回 '$superuser'
- 因為 OneLake 不擁有使用者、群組或公用存取權限,所以 'x-ms-permissions' 一律會傳回 '---------'
- 'x-ms-acl' 會以 'rwx' 格式傳回讓呼叫使用者轉換成 POSIX 存取控制清單 (ACL) 的 Fabric 權限
開放原始碼整合
由於 OneLake 支援與 ADLS 和 Blob 記憶體相同的 API,因此許多與 ADLS 和 Blob 記憶體相容的開放原始碼連結庫和套件可與 OneLake 順暢運作(例如,Azure 記憶體總管)。 其他程式庫可能需要小規模更新,才能因應 OneLake 端點或其他相容性問題。 由於最近的變更,下列程式庫已確認與 OneLake 相容。 這份清單並不完整:
範例
列出工作區中的項目(ADLS)
GET https://onelake.dfs.fabric.microsoft.com/myWorkspace?resource=filesystem&recursive=false
列出工作區中的項目(Blob)
GET https://onelake.blob.fabric.microsoft.com/myWorkspace?restype=container&comp=list&delimiter=%2F
在 Lakehouse 內建立資料夾 (ADLS)
PUT https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/newFolder/?resource=directory
取得 Blob 屬性 (Blob)
HEAD https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/file.txt