在Function Compute的應用情境中,面對多個應用或函數需共用訪問同一組資料的需求,例如,機器學習應用中,訓練好的模型需要被多個推理函數共用,您可以為函數配置NAS檔案系統來儲存這些資料,實現檔案分享權限設定,簡化資料管理流程,同時解決本地磁碟空間限制問題。為函數配置NAS檔案系統後,您的FC函數可以像操作本地檔案系統一樣,輕鬆執行讀取和寫入NAS檔案的操作。
前提條件
配置NAS
Function Compute的NAS配置為服務等級,為一個服務配置NAS掛載點後,此服務下的所有函數都可以訪問指定NAS檔案系統上的檔案。
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務操作列的配置。
在編輯服務頁面的儲存配置地區,配置以下參數,然後單擊儲存。

掛載 NAS 檔案系統:是否啟用NAS檔案系統。取值說明如下。
啟用:啟用NAS檔案系統。
禁用:不啟用NAS檔案系統。
NAS 配置方式:NAS檔案系統的配置方式。取值說明如下。
自動設定:系統自動為您配置NAS檔案系統。
自訂配置:您需要手動設定如下參數才能配置NAS檔案系統。
NAS 檔案系統:選擇已建立的NAS檔案系統。如需建立新的NAS檔案系統,單擊下方的建立新的 NAS 檔案系統,跳轉到檔案儲存體控制台手動建立。僅支援NFS協議類型的NAS檔案系統,不支援SMB協議類型。
(可選)使用者:在文字框中填寫自訂的使用者ID。如您不輸入任何值,系統將使用root使用者ID,即
UID=0。更多資訊,請參見NAS使用者和使用者組。(可選)使用者組:在文字框中填寫自訂的使用者組ID。如您不輸入任何值,系統將使用root使用者組ID,即
GID=0。更多資訊,請參見NAS使用者和使用者組。NAS 掛載點:選擇NAS掛載相關配置和設定相關目錄。關於目錄設定的更多資訊,請參見地址配置。
掛載點:選擇與當前服務配置的專用網路和交換器匹配的NAS掛載點。
資料轉送方式:選擇普通傳輸方式或加密傳輸方式。僅通用型NAS支援加密傳輸,加密傳輸會對資料轉送路徑進行加密,但是存在一定的資源消耗。更多資訊,請參見NFS協議檔案系統傳輸加密。
遠端 NAS 中的目錄:通用型NAS的該目錄必須以/開頭,極速型NAS的該目錄必須以/share開頭。若您配置的目錄在遠端NAS中不存在,Function Compute將會為您自動建立該目錄。目錄所有者為上述配置的使用者和使用者組,許可權等級為
777。函數運行環境中的本地目錄:必須為/home、/mnt或/data的子目錄。
說明配置NAS 掛載點之前,需先允許函數訪問VPC內資源,並選擇同一地區下的一個專用網路和交換器。具體操作,請參見配置網路。
一個服務最多可以掛載5個NAS掛載點。
NAS使用者和使用者組
在配置函數的NAS掛載時,首先需要配置UserID(使用者ID)和GroupID(使用者組ID),這兩個值等同於檔案系統中的使用者和組的概念。請根據需求設定檔案的擁有者和相應的組許可權,確保檔案讀寫權限一致。
UserID和GroupID取值範圍為[0, 65534]。UserID和GroupID值配置可選,如果不填寫UserID,系統會使用root使用者ID,即0UserID值為0;如果不填寫GroupID,系統會使用root使用者組ID,即GroupID值為0。
Function Compute使用非root許可權執行使用者代碼時,如果需要掛載遠端NAS的子目錄,需確保函數執行個體中執行使用者具有子目錄的讀寫權限。建議您選擇以下兩種方法中任意一種進行操作。
使用NAS執行個體掛載遠端NAS的根目錄。具體操作,請參見配置NAS。
掛載成功後使用以下樣本建立子目錄,例如fc-1。然後將NAS掛載點中的遠端 NAS 中的目錄由根目錄修改為建立的子目錄(由/修改為/fc-1),實現遠端掛載子目錄。
#!/usr/bin/env python # -*- coding: utf-8 -*- import os def handler(event, context): print('uid : ' + str(os.geteuid())) print('gid : ' + str(os.getgid())) # 請手動更改為 NAS 掛載的本地目錄 local_nas_dir = "/home/app" # 請手動更改為目標子目錄名 target_sub_dir = "fc-1" # 在 FC 中利用當前執行個體執行使用者權限建立目標目錄 new_dir = local_nas_dir + '/' + target_sub_dir + '/' print('new_dir : ' + str(new_dir)) os.mkdir(new_dir) return 'success'
使用Elastic Compute Service掛載NAS。具體操作,請參見使用ECS掛載NAS檔案系統。
掛載成功後建立子目錄,然後執行
chmod 777為子目錄授權。
系統預設的使用者和使用者組無檔案的讀寫權限,因此建議您將UserId和GroupId設定為具體的值,即1~65534的任一數字。此時,該服務下不同函數可以共用這些檔案資源。
上傳至NAS的檔案許可權與本地檔案許可權完全相同。
地址配置
每個NAS 掛載點地址由遠端 NAS 中的目錄和函數運行環境中的本地目錄組成。遠端目錄與本地目錄結合,實現從NAS檔案系統中的某個目錄到本地檔案系統中的某個目錄的映射。
遠端 NAS 中的目錄
遠端NAS中的目錄是指服務需要訪問的NAS檔案系統的目錄,由掛載點和絕對目錄兩部分組成。掛載點可以通過NAS控制台來添加。將掛載點和絕對目錄拼接得到遠端目錄。例如,如果NAS檔案系統的掛載點是xxxx-nas.aliyuncs.com,您希望被訪問的絕對目錄是/workspace/document,對應完整的遠端目錄就是xxxx-nas.aliyuncs.com:/workspace/document。
您可以登入NAS控制台,在檔案系統列表中,單擊目標檔案系統,然後單擊掛載使用,在掛載點列表中擷取掛載點。
函數運行環境中的本地目錄
函數運行環境中的本地目錄是指本地檔案系統的掛載點。不能使用通用的Linux和Unix系統目錄,例如bin、opt、var或dev等掛載NAS,Function Compute允許您使用非系統目錄mnt、home或data掛載NAS。
更多資訊
您還可以使用Serverless Devs為服務掛載NAS系統。具體操作,請參見使用s nas相關命令掛載硬碟。