AWS 學習筆記 — 無伺服器 Serverless 的 Lambda

AWS lambda 是無伺服器(Serverless)、事件推動的運算服務,相信已經被非常廣泛的運用在各種產品與服務上了。Serverless 是一種 Function as a Service (FaaS) 的雲端服務,好處就不贅述了,不外乎就是開發者只需要專注在實作功能,服務提供商會幫你處理 Infrastructure 的各種大大小小的事情與疑難雜症,且用多少算多少,也因為事件推動,有呼叫才會收費等等。

以往自己比較習慣使用 Google 生態系的服務,在 serverless 上使用的是 firebase functions,但由於工作上主要使用 AWS,且各種專案都漸漸的開始往 serverless 的方向走,覺得也是時候要大概理解一下 AWS lambda。

更多詳細介紹與 use case,直接到官方文件上最清楚:

這篇筆記記錄兩個功能實作:

  • 建立一個 Lambda Function
  • 將 Lambda 整合到 API Gateway

建立一個 Lambda Function

最基本的 lambda function 建立,如果直接使用 AWS console 建立的話,官方文件寫得蠻淺顯易懂的:

簡單來說,以下幾個步驟就可以在你的 AWS account 建立一個 Lambda Function:

  • 建立函式
  • 測試你的 Lambda
  • 刪除函式

建立函式

選擇建立方式(從頭建立 or 使用 template)

從頭建立表示會從一個空白的 lambda 開始,第一次試玩可以先使用藍圖(template)來快速建立一個 Hello World Lambda。

選擇 Hello World Template

把一些資本資訊填好之後,很容易就可以建立成功了

測試你的 Lambda

由於 Serverless Function 是一種「事件」驅動的服務,所以我們要觸發我們剛剛建立好的 lambda 一樣需要透過「事件」來觸發。

建立測試事件

選擇 configure test event 來建立一個測試事件。

可以看到我們剛剛的 function 內容會回傳 key1 的值

輸出結果,可以看到 Response 就會是剛剛我們在 test event 裡面設定的 value1,並且 Function logs 也可以看到 console log output 出來的東西。

將 Lambda 整合到 REST API

Lambda 的使用情境可以有很多,像是與 AWS 其他服務整合,常見的是可以在 S3 上傳東西的時候觸發,然後存資料到 DynamoDB,而如果要與 Web Service 整合,就必須要有 API endpoint 才可以讓外在的服務或是 web application 來呼叫。

在 AWS 服務裡,要使用 API Gateway 來整合 Lambda,才能使用外在方式來呼叫剛剛建立好的 Lambda。

有以下的幾個步驟:

  • 新增一個 API Gateway
  • 設定 Method
  • 測試你的 API

新增一個 API Gateway

對 Lambda 而言,API Gateway 也是一個觸發條件,可以直接點選新增觸發條件來建立一個 API Gateway。

建立完成後就可以在 Lambda 前面看到多了一個 API Gateway。

設定 Method

可以進入建立好的 API 之下,去設定需要的 GET, POST method,設定好記得要 deploy 你的 API,這樣改變才會上去。

測試你的 API

最後可以試著用 Postman 來打打看剛剛的 API 囉!

實際開發上,還是比較少會只用 AWS console 來開發 Lambda,通常還是會在 local 開發,再上傳上來 AWS,至於如何在 local 開發與使用 cli,等有時間研究完再補上來。

不過實際玩了一下,自己覺得好像比之前用 firebase functions 還要不好入門一些些… 不確定是實在對 AWS 不太熟,還是他真的比較不友善。而且光是在申請完帳號驗證的時候,就一直不給我通過,點 support 也沒啥幫助的樣子,只好用公司的AWS帳號來玩玩看😅。

延伸閱讀:

Update for support

驗證的部分,似乎是台灣的手機號碼對於 AWS 的驗證會有問題,直接就會被認為是出問題,最後解決的流程:

  • Call help to Support (AWS Support Center)
  • 約時間
  • 客服會打電話到你的手機
  • 跟他說你的帳號 (account number)
  • 驗證通過,帳號開通

實在是不是很好的體驗…

--

--

Technical, learning, and life. Recording everything in life.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store