AWS CTO Werner Vogels在AWS re:Invent 2014大會的第二場主題演講上公布了兩個新服務和一系列新的實例,兩個新服務都相當令人矚目:第一個宣布的新服務是Amazon EC2 Container Service,跟Docker緊密聯合的管理服務,令人興奮,不過不是本篇報道的重點。
本篇報道主要想向大家介紹一下今天宣布的第二個服務:AWS Lambda。
什么是AWS Lambda?
根據Jeff Barr在博客上的描述,Lambda是一個“可簡單創建Lambda函數、無需管理的計算平台”。不過我們也可以這么理解:Lambda是一個針對AWS計算資源的IFTTT腳本創建器和管理器。
舉個例子:你有一個照片類應用。照片上傳到S3之后,需要在DynamoDB上記錄新照片的元數據。Lambda的作用就是可以有一個地方放一個觸發腳本來執行這個任務,而不用關心這個腳本運行在什么機器或者虛擬機上。
Vogels在專訪中表示,也可以將Lambda理解為將functions(函數)從計算資源層抽象出來的服務。
Lambda的設計理念
Werner Vogels在主題演講上簡要敘述了Lambda設計思路的由來。
Vogels首先拋出一個問題:什么是雲計算的根本(primitives)?
答案:雲計算是一個執行環境。
Vogels再拋出第二個問題:什么是應用的根本?
答案:函數(functions,即業務邏輯的載體)+數據(data,即跟業務相關的輸入與輸出),以及這兩者之間的交互——即事件(events。常見的事件如增加、變更、刪除等)。
換言之,對於一個應用來說,除了functions、data、events這三個東西是根本之外,其他無論什么代碼和框架,無非都是膠水或者UI罷了。
既然如此,理想的情況是用最少的時間寫膠水,將做多的時間投入到應用的核心當中。
而最常見的膠水代碼,就是觸發器(trigger):當發生一個事件(event)時,執行某個函數(function),輸出新的數據 (data)。Vogels以Excel表單為例:在一個表單當中,一個單元格數值的變更,觸發總和列對應單元格數值的變更,就是一個事件觸發函數將新的 變量納入計算得出新的數值的過程。這個過程是自動的,還可以是並發的,即一處變更同時觸發多個函數。
基於這個思路,AWS做了Lambda服務。
Lambda的用法
以下內容來自於Jeff Barr的博文:
Lambda服務的核心概念是Lambda function(簡稱function,函數),目前僅支持Node.js。圍繞function可以定義情景,包括執行環境(語言、內存、超時、 IAM角色)以及這個function要觸發的另一個function。function的代碼和有關情景的元數據均存儲在AWS中,以ARN(Amazon Resource Name)的方式被外部識別。如需包含第三方庫,可以放在ZIP文件中上傳。
function上傳之后,開發者可以將其指定到指定的AWS資源(如某個S3 bucket,某個DynamoDB表,某個Kinesis流),然后Lambda就會建立該資源跟你的function之間的關聯。當資源方面發生變 動,Lambda就會去自動張羅資源去執行你的function。用於運行function的資源的創建分配和釋放都有Lambda自動來做,開發者完全 不需要去干預。
每一個function默認會指定一個比較短的執行時間上限,不過這個上限最高可以調整到60秒。
每一個function具有雙重的IAM角色:一個是觸發角色(invocation role),決定Lambda執行某個function的權限;另一個是執行角色(execution role),決定該function操作AWS資源的權限。
Lambda會監控每個function的執行情況,並將請求數、延時、可用性、錯誤率等指標記錄在CloudWatch里。控制台里可以看到過去30日的指標。
使用Lambda的兩點須知:
- 情景信息設置了該function的可用內存,可設置到128MB到1GB之間的任何數值。Lambda會這個數值選擇相應的CPU能力、網絡帶寬和IO帶寬。
- 每個function的觸發可以使用最多256個進程或線程,占用本地512MB存儲空間,1024個文件描述符,以及10個出口網絡連接。
- Lambda對每個AWS賬戶設置了一系列管理限制。預覽版期間,每個function最多可同時觸發另外25個function。
Lambda服務的定價見官網,由請求數、function運行期間使用的存儲、運行期間使用的內存三部分組成。預覽版期間有一部分免費的用量。
總結
Lambda是讓開發者們興奮的服務,在Twitter上激起了大量討論。Jeff Barr表示Lambda后續還會有很多更新,比如對更多AWS資源的支持和對更多語言的支持。
除了Amazon EC2 Container Service和AWS Lambda之外,本次主題演講還宣布了高性能EC2實例C4,可掛載的EBS卷(SSD)可支持到16TB的尺寸。
轉自:http://www.infoq.com/cn/news/2014/11/aws-lambda-summary
