超越JavaScript:亞馬遜發佈Lambda Layers和Runtime API

AWS re:Invent 2018發佈了很多新功能和服務,包括Lambda Layers,用於集中管理跨功能共享的代碼和數據,以及Lambda Runtime API,將AWS Lambda從JavaScript擴展到其他編程語言。

在Lambda Layers之前,需要打包和部署功能所使用的共享代碼。而有了Lambda Layers之後,開發人員將公共組件放在zip文件中,並將其作爲Lambda Layer資源上傳。

Lambda Layers通常是可預測的。例如,可以對層進行版本控制,以便更好地管理更新,並且每個版本都是不可變的。在配置函數時,它最多可以引用五個層,其中一個有可能是運行時。調用層的順序是相關的,因爲每個層都可以覆蓋上一層的功能。AWS技術佈道師Danilo Poccia解釋說:

第一層可以是運行時,第二層可以添加所需庫的特定版本。

Lambda Layers允許開發人員強制分離依賴項和自定義業務邏輯之間的關注點,讓功能代碼更加集中,從而加快部署,因爲依賴項可能可以被重用。

AWS團隊提供了一些示例層,包括非常流行的Python庫NumPy和SciPy,幫助加快開發人員在數據處理和機器學習應用程序方面的工作進展。第三方也提供了Lambda Layers,用於應用程序監控、安全和管理方面。

除了Lambda Layers之外,還有另一個更加重要的發佈,即Lambda代碼現在可以使用非JavaScript運行時。Runtime API層爲其他編程語言的代碼和Lambda環境或其他JavaScript環境(比如來自NodeSource的N|Solid Node.js Lambda Runtime環境)之間提供了通信能力。

運行時之間的通信使用基於HTTP的接口來獲取新調用的事件有效載荷,從函數中返回響應。

根據公告,目前有C++、Ruby和Rust運行時環境可用。AWS正在與其他合作伙伴合作開發其他運行時環境,包括Erlang(Alert Logic)、Elixir(Alert Logic)、Cobol(Blu Age)、Node.js(NodeSource N|Solid)和PHP(Stackery)。未來的其他語言應該使用Lambda Runtime API。

社區對Lambda Runtime的支持一直都很積極。谷歌開發人員Kelsey Hightower解釋了他的Lambda Runtime使用經歷:

在構建我的第一個自定義Lambda運行時之後,可以說,Lambda Runtime API改寫了遊戲規則。Lambda Runtime API和Lambda Layers之間的組合,讓我不再認爲添加對容器的支持會爲Lambda帶來任何額外的好處。與無服務器工作負載的容器相比,Lambda Runtime API提供了一個主要好處:一個定義良好的運行時API,可幫助我們更好地完成工作。

用戶可以通過AWS控制檯或AWS CLI使用Lambda Layers和Runtime API。AWS無服務器應用程序模型(SAM)和SAM CLI也可用於測試、部署和管理使用了這些新的Lambda功能的應用程序。

查看英文原文AWS Lambda Layers and Runtime API: beyond JavaScript

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章