做者 | 江昱 阿里巴巴高級產品經理
來源 | Serverless 公衆號,本文整理自《Serverless 技術公開課》瀏覽器
函數的調試與部署,其實這是兩部份內容:調試部分與部署部分。相對來講,調試部分是比較困難的,由於調試自己就是 Serverless 架構的一大弱點。架構
在開始講解調試以前,先問你們一個問題:咱們寫完的代碼爲何要有調試的過程呢?不調試行不行?less
記得我在上學的時候,不管是考試仍是作什麼,都少不了一個檢查的過程,例如寫完做業時,爸媽會說:「作完了檢查一下」;考試時,老師會說:「考完了檢查一下」;在作完某件事時,咱們還要有一個檢查的過程,來保證儘量地少犯錯誤。編輯器
程序也是這樣,咱們寫了一堆代碼,不免這個代碼會作一些奇奇怪怪的事情,例如說咱們少寫了一個字母,用錯了一個符號,或者說咱們的程序輸出和預期不一致,咱們的程序存在邏輯問題,咱們的程序在處理某些業務時少考慮了一些因素,咱們的程序……不少問題。這個時候,咱們就要本身來檢查一下,看看他是否是 OK 的,若是不 OK 要立刻修改,若是 OK 了,咱們再提交代碼、上傳代碼、部署代碼等,這個過程,你就能夠認爲是調試的過程。ide
固然,調試也不是這麼容易的,它也有不少的方法和理論,本文就針對函數計算以及相關工具,給你們講解怎麼調試函數計算中的函數們。函數
1)雲調試工具
首先,第一種方法,是很是簡單的,咱們只須要打開瀏覽器,進入到咱們的項目頁面,就能夠點擊 Invoke 按鈕進行調試。插件
(在線調用)命令行
上圖中能夠看到,咱們已經完成了調試,輸出了 hello world,這種方法很是簡單,對於臨時使用是很是有效果的。debug
可是稍微麻煩一些的項目,可能就不太適合在線上調試了,這時,咱們就須要本地開發和調試方法,畢竟大部分代碼開發應該都在本地,雖然你們都說雲端寫代碼、開發、debug 是將來的趨勢,可是至少目前來看,仍是本地開發更習慣、更靠譜。
因此這時就須要用咱們的插件或者命令行工具了。
2)命令行工具
(命令行工具本地調試)
咱們在安裝以後,若是想進行本地調試,還要安裝 Docker,安裝以後,咱們能夠經過 invoke local 的指令來進行本地的調試。例如上圖中,咱們能夠看到,當我執行完了 fun local invoke demo_03/demo_03,順利輸出告終果。固然若是你是第一次使用,可能還會涉及到經過 Docker 拉取鏡像的過程。
3)VSCode 插件
若是要在編輯器中寫代碼,該怎麼調試?很是簡單,使用 VSCode 插件,你只須要點擊 VSCode 插件的運行功能,插件就能夠自動拉起 Docker,幫助咱們本地調試代碼。
從上圖中能夠看到,咱們已經順利輸出告終果。
這時就會有人問:還要安裝 Docker 嗎?沒有 Docker 行不行?沒有 Docker 固然是不行的,由於這個調試的機制自己就依賴 Docker。可是咱們人類每每是具備創造力的:沒有條件,就創造條件,因此,下面再給你們分享一個無工具的調試方案。
4)無工具調試
如上圖,以 Python 爲例,咱們只須要增長一段代碼,來調用咱們的方法,至於 event 能夠採用咱們即將使用的觸發器狀況,這樣就能夠實現簡單的調試方法了。
上文介紹了這麼多的調試方法,何時該用哪一個呢?
如上圖,咱們來看一下對比,在通常小的狀況下,若是咱們不想開編輯器,也不想用 Docker ,想要獲取比較靠譜的調試,可使用雲端調試;若是咱們想本地調試,和開發更親密一些,能夠用命令行工具或者 VSCode 插件;若是咱們不想安裝各類工具,那麼徹底能夠採用無工具調試方案。
雲端調試雖然不太符合咱們的開發習慣,可是這種調試方法能夠 100% 模擬「現場場地」;命令行工具或者 VSCode 插件,雖然經過 Docker 鏡像方法,已經儘量地模仿了線上環境,可是對於一些和線上資源交互的場景,尤爲是經過 VPC 等和其餘資源交互的場景,這種方法未必能夠很好地解決相似的問題;無工具調試,只適合臨時用一下,它的環境和線上環境天差地別,極可能會對真正上線的結果形成必定影響。
函數部署的方法很簡單,也不須要特殊的依賴,就算沒有 Docker 也能夠。
在線建立函數上傳代碼包,或者更新函數上傳代碼包等。
1)經過命令行工具
以下圖所示,經過命令行工具,執行 fun deploy 來進行部署。
2)經過 VSCode 插件
經過 VSCode 插件,點擊上傳部署的按鈕,便可自動部署。
最後額外說一下,本文並不是王婆賣瓜自賣自詡,而是命令行工具的 - h 指令真的很棒,不管使用什麼指令,咱們均可以經過 - h 查看到使用方法,很是簡單方便,不信你也能夠偷偷試一下。