首先介紹下在本文出現的幾個比較重要的概念:php
函數計算(Function Compute): 函數計算是一個事件驅動的服務,經過函數計算,用戶無需管理服務器等運行狀況,只需編寫代碼並上傳。函數計算準備計算資源,並以彈性伸縮的方式運行用戶代碼,而用戶只需根據實際代碼運行所消耗的資源進行付費。
Fun: Fun 是一個用於支持 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日誌服務等資源。它經過一個資源配置文件(template.yml),協助您進行開發、構建、部署操做。
如何在函數計算中安裝依賴,一直是一個困擾用戶的難題。咱們寫過不少文章,也推出不少功能,都是爲了解決用戶安裝依賴「痛」的問題。html
*備註:請確保 Fun 工具版本在 3.0.0+java
咱們曾寫過一系列文章介紹如何安裝函數依賴,此次,咱們從用戶需求的視角對這些安裝方式進行簡單分類,以便於用戶能夠根據本身的需求,尋找到正確的解決方法。node
fun install 支持這種安裝方式,使用方法爲,安裝到某個函數下代碼目錄下,只須要在 template.yml 所在的目錄執行:python
fun install -f functionName -p apt libzbar0
fun install -f functionName -p pip flask
-p 指的是安裝的庫類型,如今支持 pip、apt 兩種。由於這兩種類型的庫安裝難度是比較大的。那麼對於 npm、maven 這些庫,怎麼裝?往下看。linux
另外,-f functionName 指的是會將依賴安裝到這個函數目錄下。若是想安裝依賴到當前目錄也是支持的,能夠經過 fun install -h 查看更多幫助信息或者閱讀《開發函數計算的正確姿式 —— 安裝第三方依賴》。git
經過 Fun 3.0 提供的 fun innstall sbox 能夠作到這一點。github
使用方法爲,在 template.yml 所在的目錄,執行以下命令:npm
fun install sbox -f pyzbar-fun -i複製代碼
其中 -f pyzbar-fun 指的是 template.yml 聲明的一個函數。flask
執行完成後,就會進入一個用於安裝依賴的交互式環境。這個交互式環境實際上是一個函數計算的模擬環境,在這個環境上裝的依賴,能夠在最大程度上保證,部署後,不會出現由於環境差別致使的兼容問題。
在這個環境裏,常見的 linux 命令都是可使用的,好比 apt-get、pip、npm 等等。只不過,在安裝 apt-get 以及 pip 庫時,須要添加 fun-install 前綴。好比原先裝一個包的步驟爲 pip install flask,那在這個環境中,只須要添加 fun-install 前綴就行了,也就是 fun-install pip install flask。
注意: 直接在交互環境使用 pip 也是能夠的,只不過,經過原生命令 pip 安裝的依賴都會被安裝到系統目錄裏,退出交互式環境時,這些依賴不會保留下來。而經過 fun-install 安裝的依賴會被安裝到代碼目錄,退出交互式命令時,能夠被保留下來。
交互式安裝依賴的更多幫助信息,請參考《開發函數計算的正確姿式——使用交互模式安裝依賴》
npm 的庫安裝自己就比 python、apt-get 的庫容易不少。緣由是 npm install 後,會直接安裝在項目目錄的 node_modules 裏,只要打包的時候,也就是將 template.yml 中的 CodeUri 指向 node_modules 所在的目錄就行了。更多信息參考。
java 庫安裝思路爲在 maven 聲明依賴,而後在打包時,將全部依賴都打包到同一個 jar 中,而後部署就能夠了。更多信息參考。
php 以及 c# 的思路其實都是相似的,能夠參考 php 的文檔以及 c# 的文檔。
這種場景,其實並無統一的解決方案,只能 case by case 的解決。目前,咱們已經積累了一些解決方案,基本上都是「開箱即用」的。能夠參考 Fun 主頁的「第三方模板」章節。
能夠閱讀下咱們的 《函數計算安裝依賴庫方法小結》,這個是原理性文章,包括咱們推出的一些功能,都是基於這裏介紹的原理來實現的。
若是依舊沒能解決問題,能夠去咱們的博客裏扒一扒,也許有意外收穫。
上面介紹了一些常見的依賴安裝的問題以及相關的解決方案。
本文爲雲棲社區原創內容,未經容許不得轉載。