函數(shù)計算掛載文件系統(tǒng)
文件存儲NAS支持與函數(shù)計算無縫集成。通過在函數(shù)計算配置NAS文件系統(tǒng),函數(shù)能夠以類似于訪問本地文件系統(tǒng)的方式操作NAS文件,實現(xiàn)文件持久化存儲。該方式不僅可以消除本地磁盤空間的限制,還允許不同的函數(shù)實例共享文件數(shù)據(jù)。本文介紹如何為函數(shù)配置NAS。
前提條件
已創(chuàng)建NAS文件系統(tǒng)。具體操作,請參見創(chuàng)建文件系統(tǒng)。
已創(chuàng)建函數(shù)服務(wù)。具體操作,請參見創(chuàng)建Web函數(shù)。
已為函數(shù)配置網(wǎng)絡(luò)。具體操作,請參見配置網(wǎng)絡(luò)。
使用限制
函數(shù)計算在同一地域下的一個函數(shù)最多支持配置5個NAS掛載點。
NAS掛載點設(shè)置的函數(shù)運行環(huán)境中的本地目錄不能沖突。
配置NAS文件系統(tǒng)
登錄函數(shù)計算控制臺,在左側(cè)導(dǎo)航欄,單擊函數(shù)。
在頂部菜單欄,選擇地域,然后在函數(shù)頁面,單擊目標函數(shù)。
在函數(shù)詳情頁面,選擇配置頁簽,然后在左側(cè)導(dǎo)航欄選擇存儲,在NAS 文件系統(tǒng)區(qū)域單擊編輯,在編輯面板中配置以下參數(shù),然后單擊部署。
您可以選擇自動配置或自定義配置兩種方式來配置NAS文件系統(tǒng)。
自動配置
系統(tǒng)自動為您創(chuàng)建一個名稱為
Alibaba-Fc-V3-Component-Generated
的通用型NAS文件系統(tǒng)以及同名的專有網(wǎng)絡(luò)、交換機和安全組。當您下一次再選擇自動配置時,系統(tǒng)查詢到當前地域下已存在該NAS文件系統(tǒng),則會復(fù)用該文件系統(tǒng)和相關(guān)VPC配置,不會重復(fù)創(chuàng)建。關(guān)于費用詳情,請參見VPC產(chǎn)品計費和通用型NAS計費。
自定義配置
您需要手動選擇NAS文件系統(tǒng),設(shè)置用戶、用戶組以及NAS掛載點等NAS相關(guān)參數(shù)才能完成配置NAS文件系統(tǒng)。
重點配置項介紹如下:
配置項
說明
示例
NAS 文件系統(tǒng)
選擇已創(chuàng)建的NAS文件系統(tǒng)。
如需創(chuàng)建新的NAS文件系統(tǒng),單擊下方的創(chuàng)建新的 NAS 文件系統(tǒng),跳轉(zhuǎn)到文件存儲控制臺手動創(chuàng)建。
重要僅支持NFS協(xié)議類型的NAS文件系統(tǒng),不支持SMB協(xié)議類型。
01d394****
用戶、用戶組
需填寫自定義的用戶ID和用戶組ID。如您不輸入任何值,系統(tǒng)將使用root用戶,即
UID=0
和GID=0
。更多信息,請參見NAS用戶和用戶組。1
遠端目錄
通用型NAS的該目錄必須以/開頭。
極速型NAS的該目錄必須以/share開頭。
若您配置的目錄在遠端NAS中不存在,函數(shù)計算將會為您自動創(chuàng)建該目錄。目錄所有者為上述配置的用戶和用戶組,權(quán)限等級為
777
。更多信息,請參見遠端目錄。
/
函數(shù)本地目錄
建議使用/home、/mnt、/tmp或/data的子目錄。
說明不能使用通用的Linux和Unix系統(tǒng)目錄及其子目錄,例如/bin、/opt、/var或/dev等,以免掛載失敗。
更多信息,請參見函數(shù)本地目錄。
/mnt/nas
說明如果您希望不同函數(shù)可以共享NAS文件資源,您需要在為這些函數(shù)配置NAS文件系統(tǒng)時,使用同一個用戶和用戶組。
上傳至NAS的文件權(quán)限與本地文件權(quán)限完全相同。
驗證NAS是否掛載成功
準備訪問NAS的函數(shù)代碼
完成NAS文件系統(tǒng)的配置后,您可以在您的函數(shù)代碼中,通過掛載時指定的路徑來訪問NAS文件系統(tǒng)。
在函數(shù)詳情頁面,單擊代碼頁簽,在代碼編輯器中編寫代碼,然后單擊部署代碼。
本文以Python事件函數(shù)代碼為例,在代碼中完成將內(nèi)容寫入NAS文件系統(tǒng)和讀取NAS文件內(nèi)容。
#!/usr/bin/env python # -*- coding: utf-8 -*- import random import subprocess import string import os def handler(event, context): # report file system disk space usage and check NAS mount target out, err=subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE).communicate() print('disk: ' + str(out)) lines = [ l.decode() for l in out.splitlines() if str(l).find(':') != -1 ] nas_dirs = [ x.split()[-1] for x in lines ] print('uid : ' + str(os.geteuid())) print('gid : ' + str(os.getgid())) for nas_dir in nas_dirs: sub_dir = randomString(16) file_name = randomString(6)+'.txt' new_dir = nas_dir + '/' + sub_dir + '/' print('test file: ' + new_dir + file_name) # 寫入NAS文件 content = "NAS here I come" os.mkdir(new_dir) fw = open(new_dir + file_name, "w+") fw.write(content) fw.close() # Showing the folder tree in NAS for home, dirs, files in os.walk(nas_dir): level = home.replace(nas_dir, '').count(os.sep) indent = ' ' * 2 * (level) print('{}{}/'.format(indent, os.path.basename(home))) subindent = ' ' * 2 * (level + 1) for f in files: print('{}{}'.format(subindent, f)) # 讀取NAS文件 f = open(new_dir + file_name, "r") print(f.readline()) f.close() return 'success' def randomString(n): return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(n))
驗證結(jié)果
代碼部署成功后,單擊代碼頁簽的測試函數(shù)。
執(zhí)行完成后,您可以在代碼頁簽的下方查看執(zhí)行結(jié)果。在日志輸出頁簽下可以看到函數(shù)已經(jīng)成功寫入NAS文件并讀取NAS文件。
(可選)完成文件的寫入和讀取之后,您可以登錄實例查看函數(shù)本地目錄下的文件情況,確認查詢到的NAS文件與上一步函數(shù)執(zhí)行成功后日志輸出內(nèi)容是否一致。
您可以在函數(shù)詳情頁面,單擊實例頁簽,單擊目標實例操作列的登錄實例。
如果當前沒有運行中的實例,可以在代碼頁簽單擊測試函數(shù)重新執(zhí)行一次函數(shù),創(chuàng)建實例。
成功登錄實例后,您就可以通過命令查看配置的函數(shù)本地目錄下的文件信息。示例如下:
(可選)您還可以使用NAS可視化瀏覽器應(yīng)用,直接通過瀏覽器管理已掛載NAS文件系統(tǒng)中的文件。
登錄NAS控制臺,找到目標文件系統(tǒng),在操作列,選擇 。如果當前地域不支持直接打開瀏覽器應(yīng)用,請參見使用函數(shù)計算快速搭建可視化NAS瀏覽器應(yīng)用。
相關(guān)概念
NAS用戶和用戶組
UserID(用戶ID)和GroupID(用戶組ID)取值范圍為[0, 65534],如果不填寫,默認值均為0,即分別表示root用戶ID和root用戶組ID。您需要根據(jù)需求設(shè)置文件的擁有者和相應(yīng)的組權(quán)限,確保文件讀寫權(quán)限一致。例如,如果您希望不同函數(shù)可以共享NAS文件資源,您需要在為這些函數(shù)配置NAS文件系統(tǒng)時,使用同一個用戶和用戶組。
遠端目錄和函數(shù)本地目錄
每個NAS掛載點的地址由遠端目錄和函數(shù)本地目錄組成。掛載NAS的過程本質(zhì)上是創(chuàng)建了一個從函數(shù)計算實例的本地目錄到NAS遠端目錄的映射關(guān)系。
遠端目錄
遠端NAS中的目錄是指位于NAS文件系統(tǒng)中的目錄,由掛載點和絕對目錄兩部分組成。掛載點可以通過NAS控制臺來添加。將掛載點和絕對目錄拼接得到遠端目錄。例如,NAS文件系統(tǒng)的掛載點是xxxx-nas.aliyuncs.com,您希望被訪問的絕對目錄是/workspace/document,對應(yīng)完整的遠端目錄就是xxxx-nas.aliyuncs.com:/workspace/document。
您可以登錄NAS控制臺,在文件系統(tǒng)列表中,單擊目標文件系統(tǒng),然后單擊掛載使用,以獲取掛載點。
函數(shù)本地目錄
函數(shù)運行環(huán)境中的本地目錄是指本地文件系統(tǒng)的掛載點。建議使用/home、/mnt、/tmp或/data的子目錄。不能使用通用的Linux和Unix系統(tǒng)目錄及其子目錄掛載NAS,例如/bin、/opt、/var或/dev等。
相關(guān)文檔
如果您希望了解函數(shù)計算使用NAS的適用場景及差異,請參見函數(shù)存儲選型。
您可以通過函數(shù)計算Serverless應(yīng)用中心的fc-nas-filemgr應(yīng)用,快速搭建可視化NAS瀏覽器。具體操作,請參見快速入門(FC)。