References
[1] AWS Lambda webpage: Landing page of official AWS Lambda,基本概念
[2] AWS Lambda: How It Works.:工作原理
[3] programming-model:與實作語言(node.js, JAVA, python)相關的程式結構
Lambda的基本概念[1]
首先是lambda的操作流程- 使用者上傳程式碼到AWS Lambda
- 設定Lambda在什麼情況下被喚醒
- Lambda開始運作,使用者可以轉身去做其他事
- 使用者付費:Lambda被喚醒做事情的這段時間工資由使用者付擔
Lambda可以做什麼事?
- 資料處理
- 即時檔案處理:資料上傳後,立即被Lambda處理。比如建立圖片縮圖,影片轉碼、檔案編索、驗證內容、篩選資料。
可以參考The Seattle Times使用Lambda來調整影像的大小,以符合手機/電腦不同的螢幕大小 - 即時串流處理:可以用來追蹤應用程式活動,相關應用應與社群行為分析有關。這部份關聯到AWS KINESIS這個服務,目前還不熟悉,在這篇文章先跳過這個部份。
- 作為後端程式:處理web, 行動、物聯網及第三方api的request
- 行動後端
使用情境:當使用者在前端上傳一個近況,透過API通知Lambda,Lambda找到使用者的朋友清單,並發出SNS訊息給朋友們 - Web application
使用情境:AWS S3上架設了一個天氣查詢網站,當使用者按下查詢當地天氣的按鈕時,透過API通知Lambda,Lambda在database中取得當地天氣的資料並將該資料回傳給使用者。
Lambda的工作原理[2]
- lambda的核心:lambda function and event source
- lambda function 可以透過 HTTPS or AWS SDKs 喚醒
- lambda function由code, configuration information組成。configuration information包含了你想要用多少計算資源(記憶體的量),lambda 存取AWS 資料的權限。在configuration中,使用者也需要去設定一個handler function來處理event data
- Lambda使用的記憶體由programmer指定,而CPU方面,AWS Lambda會自動根據記憶體的大小去分配,基本上是等比例增加的,比如說使用256MB記憶體空間的Lambda function,比起使用128MB記憶體空間的Lambda function的CPU大小是兩倍。
- Event Sources: 在以下情況時,可以作為讓Lambda 執行的事件
- AWS services 選項非常的多,只能先選幾個介紹
Amazon S3 是Amazon提供的雲端空間服務,使用者可以上傳檔案到這個空間中,而S3內部資料的增減,也可以作為trigger Lambda 的事件
Amazon DynaoDB是AWS 的雲端資料庫服務,資料庫的更新也可以作為trigger event
其他還有Amazon Kinesis, Amazon SNS, Amazon SES, Amazon Cognito, Amazon CloudWatch Logs, AWS CloudFormation, Amazon CloudWatch Events, AWS Config - Scheduled Event
AWS除了是event-driven的方式被呼叫,他同時也可以作為一個有固定行程的服務,programmer可以設定Lambda function被固定執行的頻率(比如每天執行、每小時執行,或每週執行)。 - Other Amazon services (Amazon Echo)
這是一個很酷的功能,Amazon Echo是包含喇叭、mic的硬體,而Alexa是搭載在上面的語言助理軟體,Alexa有提供一個APIs,去呼叫Lambda進行客製的功能。 - On-Demand Lambda Function Invocation: Over HTTPS
使用Amazon API Gateway將GET, PUT這些request傳給Amazon API Gateway service,然後喚起Lambda function,參考Amazon API gateway - On-Demand Lambda Function Invocation: Build Your Own Event Sources
使用AWS SDKs or AWS Mobile SDKs 就可以產生Lambda 可以接收的事件
Programming Model[3]
Lambda function 包含這些核心:- Handler:當Lambda function被喚醒時,會馬上呼叫Handler。AWS Lambda將event data作為第一個參數給handler。
- The context object and how it interacts with Lambda at runtime :AWS Lambda傳送給handler的第二個參數是context object。簡單來說,context object是用來當Lambda function與AWS Lambda之間handshake的溝通介面
- Logs
- Exceptions