在使用 阿裡雲函數計算
的過程中,您是否有過以下的疑慮:
1. 每次想要更改函數時,擔心會破壞目前的線上環境?
2. 新做的改動上線後有點問題,想要復原到改動之前的樣子?
3. 想把生産環境的代碼與開發中的代碼分開?
如果回答是有,表示您應該使用阿裡雲函數計算最新推出的版本管理功能了~
本系列文章将分章節介紹版本管理功能的使用方法。首先介紹兩個概念“版本”和“别名”:
版本(Versions):
函數計算提供服務級别的版本控制,版本相當于服務的快照,包括服務的配置、服務内的函數代碼及配置。當您釋出版本時,函數計算會為服務生成快照,并自動配置設定一個版本号與其關聯,以供後續使用。版本号從1開始單調遞增,不會被重複使用。

在沒使用版本的情況下,您每次在服務上的改動都會立刻影響到生産環境,無法控制釋出的時機。使用版本後,您可以在測試穩定後釋出服務版本,用穩定的版本來服務線上請求,并且可以繼續在“LATEST”版本上進行開發。
别名(Aliases):
别名可以了解為指向特定服務版本的指針,使用别名通路服務或函數時,函數計算會将别名解析為其指向的版本。别名可以更改,您可以用PROD和TEST别名分别指向不同的版本,和您産品整體的開發測試結合起來。
别名能進一步幫助您的釋出流程。假設您有别名PROD指向穩定的版本1,并在“LATEST”上開發了新功能并釋出新版本2後,隻需要更新别名PROD指向版本2,就可以完成版本的更新疊代。
觸發指定版本下的函數
有了版本和别名,該如何觸發不同版本下的函數呢?以InvokeFunction API為例,您隻需要在request path的serviceName後加分隔符“.”,并用“qualifier”指定您需要的版本或者别名即可:
InvokeFunction Path format:
POST /services/{serviceName}.{qualifier}/functions/{functionName}/invocations
例如:
- POST /services/mySerivce.1/functions/myFunction/invocations
是調用myService服務版本1下的myFunction函數
- POST /services/mySerivce.prod/functions/myFunction/invocations
是調用myService服務别名prod下的myFunction函數,函數計算會在運作時将别名prod解析為其指向的具體版本。
有了“版本”和“别名”,我們就可以将開發不同階段的環境隔離開來,并通過傳參調用想要的版本。讓我們再回顧一下:
1. 版本是服務的快照,釋出後不能更改
2. 别名是指向版本的指針,運作時會被解析為具體的版本
3. 觸發函數時隻需要在請求路徑服務名稱後帶”.”分隔符和版本/别名的字尾即可
更多版本管理的進階用法和最佳實踐,會陸續釋出文章來介紹,敬請關注!