天天看點

你還在生産環境改代碼麼?函數計算版本管理(一)版本和别名簡介

在使用 阿裡雲函數計算

的過程中,您是否有過以下的疑慮:

1.     每次想要更改函數時,擔心會破壞目前的線上環境?

2.     新做的改動上線後有點問題,想要復原到改動之前的樣子?

3.     想把生産環境的代碼與開發中的代碼分開?

如果回答是有,表示您應該使用阿裡雲函數計算最新推出的版本管理功能了~

本系列文章将分章節介紹版本管理功能的使用方法。首先介紹兩個概念“版本”和“别名”:

版本(Versions):

函數計算提供服務級别的版本控制,版本相當于服務的快照,包括服務的配置、服務内的函數代碼及配置。當您釋出版本時,函數計算會為服務生成快照,并自動配置設定一個版本号與其關聯,以供後續使用。版本号從1開始單調遞增,不會被重複使用。

你還在生産環境改代碼麼?函數計算版本管理(一)版本和别名簡介
以控制台為例,在您的服務頁面點選“操作”,選擇“釋出版本”,就可以釋出一個新版本了。
你還在生産環境改代碼麼?函數計算版本管理(一)版本和别名簡介
注意,隻有當您在“LATEST”版本下時才可以釋出新版本。這是函數計算為您生成的預設版本,是您編輯服務、更改函數的地方。當您釋出新版本時,函數計算會将“LATEST”版本中的内容進行快照,釋出一個新版本,釋出後的版本是不能更改的。您可以在控制台上檢視您所有釋出的版本。
你還在生産環境改代碼麼?函數計算版本管理(一)版本和别名簡介

在沒使用版本的情況下,您每次在服務上的改動都會立刻影響到生産環境,無法控制釋出的時機。使用版本後,您可以在測試穩定後釋出服務版本,用穩定的版本來服務線上請求,并且可以繼續在“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.     觸發函數時隻需要在請求路徑服務名稱後帶”.”分隔符和版本/别名的字尾即可

更多版本管理的進階用法和最佳實踐,會陸續釋出文章來介紹,敬請關注!

繼續閱讀