最近摸索了一陣子 AWS Lambda , 覺得這是個有潛力的新產品 , 所以來聊一下這個.

Lambda 是一種無伺服器(Serverless), 而且設計成事件驅動的運算服務. 白話一點來說, 你可以將你的 code 上傳, 當有事件產生(例如cronjob , 或者S3有新的檔案被上傳上來) , 你的code 就會在瞬間(零點幾秒以內)被叫起來執行. 由於你不用管 Server如何維護, 或者自動擴展之類的事, 所以叫做 Serverless ,這些都被處理了,我們只需搞定寫程式即可.

HelloWorld

AWS Lambda 目前支援 NodeJS,Java, Python2.7以及C# , 以 Python 為例, 這邊就是新Function的空白樣板, 程式進入點就在 lambda_handle(event,context)這邊.

--

按 Test 即可手動執行, 以下是執行結果:

--

以上是程式輸出, 最後記載了這程式執行的統計資料, 像是花了 15ms (0.015s) 跑完全程, 這是在一個 128MB 記憶體的小容器執行的, 但最多只用掉了 15MB等等.

既然是 python 2.7 , 總擔心會有utf-8的問題需要解決, 不過只要加了encoding 語法後, 都很正常.

費用

AWS Lambda 主要是收取兩個費用: Request 數量, 以及你使用量(RAM 有多大? 跑了多久?)

  • 請求 : 每月前 100 萬個請求免費 / 此後每 100 萬個請求 0.20 USD (每個請求 0.0000002 USD)
  • 持續時間 : 每 GB-秒支付 0.00001667 USD 的費用。
  • 免費方案 : Lambda 免費方案包含每月 100 萬個免費請求以及每月 400,000 GB-秒的運算時間, 現有的和新的 AWS 客戶都能使用.

從字面上來看, 小數位這麼多位 ,再加上免費方案的推廣, 可以說非常的便宜. 適合寫一些規模不大,單次執行不會跑太久的小服務.

範例程式下載

這陣子摸索的過程中, 也累積了一些測試的 python code , 另外也試著做了一個網站爬蟲(於另篇討論).

github傳送門

目錄說明

  • example : 從零開始用python寫一些簡單程式. 以及如何使用boto3 lib 操作 S3/DynamoDB等服務
  • tw_temperature : 爬蟲練習的題目, 定期抓氣溫資料,並存到DynamoDB資料庫裡

參考資料