開發函式計算的正確姿勢 —— 依賴安裝方法一覽
1. 前言
首先介紹下在本文出現的幾個比較重要的概念:
如何在函式計算中安裝依賴,一直是一個困擾使用者的難題。我們寫過很多文章,也推出很多功能,都是為了解決使用者安裝依賴“痛”的問題。
*備註:請確保 Fun 工具版本在 3.0.0+
2. 依賴安裝方法一覽
我們曾寫過一系列文章介紹如何安裝函式依賴,這次,我們從使用者需求的視角對這些安裝方式進行簡單分類,以便於使用者可以根據自己的需求,尋找到正確的解決方法。
2.1 使用者需求一:我就想安裝一個庫到函式,能不能不讓我理解 pip、apt-get 等包管理工具的複雜概念?
fun install 支援這種安裝方式,使用方法為,安裝到某個函式下程式碼目錄下,只需要在 template.yml 所在的目錄執行:
-
安裝 apt-get 依賴: fun install -f functionName -p apt libzbar0
-
安裝 pip 依賴: fun install -f functionName -p pip flask
-p 指的是安裝的庫型別,現在支援 pip、apt 兩種。因為這兩種型別的庫安裝難度是比較大的。那麼對於 npm、maven 這些庫,怎麼裝?
往下看。
另外,-f functionName 指的是會將依賴安裝到這個函式目錄下。如果想安裝依賴到當前目錄也是支援的,可以透過 fun install -h 檢視更多幫助資訊或者閱讀
《開發函式計算的正確姿勢 —— 安裝第三方依賴》。
2.2 使用者需求二:我想裝的庫,安裝步驟比較複雜,我只知道怎麼在 linux 伺服器上裝,函式計算能否提供相同的安裝體驗?
透過 Fun 3.0 提供的 fun innstall sbox 可以做到這一點。
使用方法為,在 template.yml 所在的目錄,執行如下命令:
fun install sbox -f pyzbar-fun -i
其中 -f pyzbar-fun 指的是 template.yml 宣告的一個函式。
執行完成後,就會進入一個用於安裝依賴的互動式環境。這個互動式環境其實是一個函式計算的模擬環境,在這個環境上裝的依賴,可以在最大程度上保證,部署後,不會出現因為環境差異導致的相容問題。
在這個環境裡,常見的 linux 命令都是可以使用的,比如 apt-get、pip、npm 等等。只不過,在安裝 apt-get 以及 pip 庫時,需要新增 fun-install 字首。比如原先裝一個包的步驟為 pip install flask,那在這個環境中,只需要新增 fun-install 字首就好了,也就是 fun-install pip install flask。
注意: 直接在互動環境使用 pip 也是可以的,只不過,透過原生命令 pip 安裝的依賴都會被安裝到系統目錄裡,退出互動式環境時,這些依賴不會保留下來。而透過 fun-install 安裝的依賴會被安裝到程式碼目錄,退出互動式命令時,可以被保留下來。
互動式安裝依賴的更多幫助資訊,請參考
《開發函式計算的正確姿勢——使用互動模式安裝依賴》
2.3 使用者需求三:我是 node/java/php/c# 使用者,我想裝一些庫,怎麼裝?
npm 的庫安裝本身就比 python、apt-get 的庫容易很多。原因是 npm install 後,會直接安裝在專案目錄的 node_modules 裡,只要打包的時候,也就是將 template.yml 中的 CodeUri 指向 node_modules 所在的目錄就好了。更多資訊
參考。
java 庫安裝思路為在 maven 宣告依賴,然後在打包時,將所有依賴都打包到同一個 jar 中,然後部署就可以了。更多資訊
參考。
2.4 使用者需求四:裝完後,有沒有辦法“錄製”下來,再次需要的時候,可以一鍵安裝?
2.5 使用者需求五:我的安裝比較複雜,即使在本地,我也不知道要怎麼裝,你們有什麼方案嗎?
這種場景,其實並沒有統一的解決方案,只能 case by case 的解決。目前,我們已經積累了一些解決方案,基本上都是“開箱即用”的。可以參考 Fun 主頁的
“第三方模板”章節。
可以閱讀下我們的
《函式計算安裝依賴庫方法小結》,這個是原理性文章,包括我們推出的一些功能,都是基於這裡介紹的原理來實現的。
如果依舊沒能解決問題,可以去我們的
部落格裡扒一扒,也許有意外收穫。
3. 總結
上面介紹了一些常見的依賴安裝的問題以及相關的解決方案。
本文作者:tanhe123
本文為雲棲社群原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947441/viewspace-2658072/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開發函式計算的正確姿勢——使用互動模式安裝依賴函式模式
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- 開發函式計算的正確姿勢——OCR 服務函式
- 開發函式計算的正確姿勢——執行 Selenium Java函式Java
- 開發函式計算的正確姿勢 —— 排查超時問題函式
- 函式計算安裝依賴庫方法小結函式
- 開發函式計算的正確姿勢——使用 brotli 壓縮大檔案函式
- 開發函式計算的正確姿勢———為 PHP 執行時新增自定義擴充套件函式PHP套件
- Python開發遊戲的正確姿勢Python開發遊戲
- 計算網路頻寬需求的正確姿勢
- 開啟Git的正確姿勢Git
- 學習軟體開發的正確姿勢
- 掌握Redis分散式鎖的正確姿勢Redis分散式
- Goland 開啟一個專案的正確姿勢GoLand
- laradock 中安裝 Redis 擴充套件的正確姿勢Redis套件
- laradock 中安裝 Imagick 擴充套件的正確姿勢套件
- hhvm的正確安裝姿勢http://dl.hhvm.com映象HTTP
- BigDecimal 在資金計算時正確使用姿勢Decimal
- 「分散式」實現分散式鎖的正確姿勢?!分散式
- Redis的正確使用姿勢Redis
- vue多頁面開發和打包的正確姿勢Vue
- django開發時遇到問題的正確求助姿勢Django
- 區塊鏈的正確開啟姿勢區塊鏈
- Git和GitHub的正確開啟姿勢Github
- WPF依賴屬性的正確學習方法
- Postman 正確使用姿勢Postman
- Homestead 開啟mongodb正確姿勢MongoDB
- 前後端協同開發,使用 GraphQL 正確的姿勢後端
- 這才是實現分散式鎖的正確姿勢!分散式
- git commit 的正確姿勢GitMIT
- 玩轉 Ceph 的正確姿勢
- laravel 使用 es 的正確姿勢Laravel
- java關流的正確姿勢Java
- 使用快取的正確姿勢快取
- Fragment commit 的正確姿勢FragmentMIT
- 開源專案翻譯正確姿勢
- redis應用系列一:分散式鎖正確實現姿勢Redis分散式
- Mac Mojava 透過 homebrew 安裝 PHP5.6 版本正確姿勢MacJavaPHP