更好地部署和應用AWS Lambda的7個開源工具

函數即服務具有簡單性,但設置過程卻很繁瑣。人們可以採用一些開源工具簡化AWS Lambda部署。

無服務器應用程序可以將軟件精簡到最低限度:通常是可按需調用和擴展的一小段代碼。無服務器可以運行小型應用程序(例如簡單的API或單個網頁),並且沒有采用服務器或虛擬機的管理開銷。無服務器系統簡化了開發人員的工作,並在適合工作的範圍內提供了彈性。

AWS Lambda是目前最知名的無服務器系統之一,但是像亞馬遜公司的許多事物(以及雲計算的許多事物)一樣需要採用工具。而AWS Lambda是工具、框架和項目的集合,旨在簡化設置、部署和管理AWS Lambda函數的過程。

1.AWS無服務器應用程序模型(AWS SAM)

長期以來,亞馬遜公司一直以提供基礎設施和提供工具為主。亞馬遜公司在2016年末(AWS Lambda推出大約兩年後)推出了AWS無服務器應用程序模型,該模型被稱為AWS Lambda的“構建無服務器應用程序的開源框架”。

AWS SAM本質上是一種以較少的工作量為AWS Lambda函數生成AWS CloudFormation應用程序定義的方法。像Kappa一樣,企業可以創建一個YAML模板來定義其應用程序,然後將YAML轉換為AWS CloudFormation聲明。無服務器應用程序模型(SAM)還提供一種在本地測試已定義應用程序的方法,提供用於逐步檢查AWS Lambda函數(在Node.js、Python或Go中)的工具,並與Amazon的CodeDeploy一起使用以支持對函數的修訂。

2. AWS Lambda Power Tuning

調整AWS Lambda函數的成本/性能比可能很乏味。為了獲得最佳結果,用戶需要在函數運行時收集有關該功能的數據,然後根據提供給該功能的工作量做出決策。AWS Lambda Power Tuning項目有助於消除一些繁瑣的工作。

將AWS Lambda Power Tuning部署為AWS 步進功能狀態機。它接受一個AWS Lambda函數和一系列電源配置,使用每個電源配置運行該函數,並報告通常哪種配置最有效地完成工作。通過採用AWS Lambda Power Tuning 2.0版,用戶可以針對成本或速度來優化功能。

3.Kappa

Kappa以希臘字母lambda之前的字母命名,是一種Python工具集,用於簡化AWS Lambda函數的部署。創建AWS Lambda函數涉及許多離散步驟:創建函數、配置權限、配置策略和角色、上載功能、運行測試、,添加事件源等。採用Kappa使其過程自動化。

用戶將創建一個描述函數和運行時環境的YAML文件,並提供一個JSON文件作為測試輸入。單元測試通過Python的nose來運行,但是任何測試運行器都可以互換。Kappa使得刪除函數和刪除其關聯的角色、策略、事件源信息變得容易,因此用戶可以將其設置和拆除。如果需要,可以使用更大的測試機制。

在此提出一個警告:Kappa兩年內未進行任何修訂。同樣用Python編寫的AWS無服務器應用程序模型項目提供了更完整和最新的功能集。

4.Lambda Warmer

調用時,AWS Lambda函數將運行一段有限的時間(最多15分鐘),然後關閉。每當需要重新啟動它們時,函數可能會延遲幾秒鐘。Lambda Warmer項目為用戶提供了一種使AWS Lambda函數保持活動狀態,並獨立避免“冷啟動”的方法。

用JavaScript編寫的Lambda Warmer是可以添加到現有AWS Lambda函數的模塊。它在將實際請求傳遞給主邏輯時,攔截髮送給函數的預熱“ping”,並採取適當的操作(例如如果用戶使用併發,則處理初始化併發函數實例)。請注意,Lambda Warmer不會觸發預熱動作。為此,用戶需要一個CloudWatch規則或其他一些定期調用的機制。

5.Lambdoku

如果用戶是Heroku的忠實粉絲,並且想在AWS Lambda上體驗類似於Heroku的體驗,那麼Lambdoku是用戶的不二之選。 Lambdoku使用類似於Heroku的命令將AWS Lambda API封裝在命令行界面中,甚至模擬了許多Heroku行為,例如管道、配置和發佈。其缺點是:由於AWS Lambda處理配置更改的方式,Lambdoku無法像Heroku一樣保證操作。

6.適用於AWS Lambda的OpenFaaS

OpenFaaS項目的任務是“使將任何內容簡化為無服務器功能的過程變得簡單”。 “anything”是指以任何語言編寫的任何代碼以及在Docker容器中運行的任何運行時。 OpenFaaS將Docker容器轉換為無服務器函數,並使用Kubernetes對生成的應用程序進行縮放、管理和路由控制。因此,OpenFaaS允許將無服務器功能部署到可使用Kubernetes的任何系統(包括公共雲)。

現在,OpenFaaS開發人員正在對服務提供商附加組件,適用於AWS Lambda的FaaS-lambda進行beta測試。藉助適用於AWS Lambda的OpenFaaS,打包用於OpenFaaS的應用程序可以在AWS Lambda實例和Kubernetes上互換運行。正如OpenFaaS開發人員所指出的那樣,要求較低的功能可以保留在AWS Lambda上(甚至在免費層上),而要求較高的功能可以在Kubernetes上運行。用於Lambda的OpenFaaS仍處於私有測試階段,但該項目正在接受註冊以進行早期預覽。

7.Serverless Framework

本文中描述的大多數項目都專門針對AWS Lambda。無服務器框架擴展了更廣闊的網絡,允許開發人員在AWS Lambda、Google Cloud、Microsoft Azure、Apache OpenWhisk和Kubeless(用於Kubernetes的無服務器框架)上創建和部署無服務器應用程序。

使用無服務器框架,可通過CLI創建無服務器函數,並將該函數的配置存儲在生成的可開發人員編輯的YAML文件中。CLI還用於部署、測試和調用函數、檢索日誌、執行監視以及從部署中刪除函數。用戶可以從無到有地創建新函數,也可以基於許多可用示例之一。也可以將函數集成到工件中以供以後部署。

無服務器框架還嘗試將其內部結構映射為儘可能接近目標平臺的函數。例如,其“圖層”功能映射到AWS Lambda圖層。


分享到:


相關文章: