aws, fastapi,

AWS lambda 介紹與fastapi部署教學

Champion Champion Follow Mar 22, 2022 · 1 min read
AWS lambda 介紹與fastapi部署教學
Share this

最近在研究這些AWS服務要怎麼使用,發現有很多概念還不清楚,所以這篇想要來了解一下AWS lambda的一些原理和相關概念~~~

無伺服器

提到AWS lambda這項服務,就會想到他是一種無伺服器的架構,無伺服器的架構是什麼呢?它並不是真的沒有伺服器,而是AWS已經幫你處理好伺服器的基礎架構、維運、設定等等,讓我們可以不用煩惱這些,只要專心開發我們的應用程式。

使用AWS lambda的優點

  1. 只要按實際的用量付費,不用一直開著機器導致要花更多的錢,因為AWS lambda是事件驅動式的,只有在發生事件比如說使用者請求時才會啟動,所以才不用一直開著。
  2. 不用擔心當使用量增加時要去調整伺服器的資源,AWS lambda會去預測然後預先幫你準備好。

使用時機

在使用上會有一些限制,AWS lambda最多只能運行15分鐘,所以不適合需要長時間運行的服務,但像是api類型的服務就很適合,因為通常一個請求在幾秒內就會回傳。

實際操作

首先進到AWS Lambda服務後,選取函式->建立函式 image

然後輸入我們函式的名稱以及選取我們在執行函式需要的環境後,就可以按建立函式,建立我們的第一個lambda 函式囉~~~ image

然後我們就會到程式的編輯頁面,可以開始建立我們fastapi的程式~~ image

我們先把原本lambda_function.py 這個檔案改成 main.py 這樣比較符合fastapi的檔案命名(不改也可以),然後再寫一個最簡單的fastapi回傳hello word,值得注意的是可以看到程式碼第11行需要用Mangum 去把我們的fastapi包起來,這是為什麼呢?因為Mangum可以將任何ASGI的應用(fastapi)轉成lambda handler讓Lambda函數執行,簡單來說就是可以讓我們的fastapi服務可以在AWS lambda服務上運行。 image

再來我們要來設定執行的時候lambda要執行的func,這部分也是很多教學沒提到的部分,如果沒設定就會跑不起來,我們要去改下圖紅框框的地方把原本的lambda_function.lambda_handler改成 main.handler 這樣lambda函數才知道啟動的時候要執行什麼。 image image

你以為這樣就結束了嗎,並沒有xd,你會發現我們都沒有裝套件要怎麼執行fastapi和Mangum呢?所以接下來我們要來裝套件,這裏會透過Layer這個功能來裝套件,好處是可以讓不同的lambda函式共用這個layer,要在這個layer裝套件,我們必須先在本地準備好套件的壓縮檔,所以先來教大家怎麼準備這個壓縮檔~~

首先先創一個叫python的資料夾(一定要叫python不然會吃不到),然侯同時準備好requirements.txt裡面寫好要裝的套件版本

image

目錄結構如下:

image

接著回到一開始的地方,輸入壓縮python資料夾的指令,壓縮成dependency.zip,這樣我們就可以準備上傳囉~~

接著回到AWS選layer->建立Layerimage

一樣輸入這個layer的名稱以後,我們上傳我們剛剛用好的壓縮檔後就可以建立Layer囉~~ image

再來回到lambda 函式的頁面,設定layer,點選新增layer image

選取自訂layer,選剛剛我們創立好的layer,版本因為只有一版,所以是1。 image

套件和api程式碼都準備好我們就可以開始部署,點選deploy,這樣就部署完成囉~~ image

來測試一下看看有沒有順利運行~~點選Test image

然後在範本的地方選apigateway-aws-proxy,然後把紅色框框的地方都改成下圖這樣,這樣才可以打得到我們的api image 可以看到成功回傳Hello World,這樣就完成fastapi部署在lambda上面囉 image

有什麼問題可以留言在下方跟我說,喜歡我的文章在幫我拍拍手喔~~~~

參考資料:

  1. https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/welcome.html
  2. https://www.thenewslens.com/article/144463
Join Newsletter
Get the latest news right in your inbox. We never spam!
Champion
Written by Champion Follow
Hi, I am Champion, the author of CHAMPION.AI, I will share some AI and investment articles. I hope you like it.