將 FastAPI 部署到 AWS API Gateway 教學(配合 Lambda 使用)

本文將教學如何把寫好的 FastAPI 程式碼,配合 AWS Lambda 部署到 API Gateway 上(包含詳細圖文解說 API Gateway 的設定)

前情提要

這篇文章會使用到 AWS Lambda 的函式,若還不清楚怎麼使用的話,推薦可以先看下面這篇文章再回來,如果正在閱讀文章的你已經會使用,那就可以直接往下看囉!

在 AWS Lambda 上使用 Python 第三方套件教學

流程步驟

  1. 建立 API
  2. 設定 API
    • 建立方法
    • 建立資源
  3. 部署 API
  4. 實際呼叫 API 測試

1. 建立 API

首先要確定自己要建立的區域,建議使用比較近的國家地區,例如:東京、大阪、新加坡或香港,因為這將會嚴重影響 API 的速度,我之前誤闖美國東部 Ohio (us-east-2),導致我在 GET / POST 都慢到懷疑人生,所以請先一定要選擇好!

接著就可以進入 AWS API Gateway 的頁面, API 類型選擇「REST API」並點選「建置」,若是第一次在這個國家地區建立 API 的話,會跳出一個教學視窗,大概看一看就可以按確定把它關掉了。

接下來會進入到以下頁面,此時預設可能是「範本 API」,請改成建立「新 API」,並且設定一個「API 名稱」,因為我的 API 是要來收集 cookie 的,所以我命名為 cookie_api,設定完成就可以按「建立 API」。

閱讀更多»
廣告

在 AWS Lambda 上使用 Python 第三方套件教學

本文紀錄如何在 AWS Lambda 上安裝並使用 Python 第三方套件,步驟包含在本機先建立套件的 zip 檔,以及新增 Layer 到 Lambda 函式上

Lambda 函式預設無法使用 Python 第三方套件

我在 AWS Lambda 撰寫好函式(或是使用 $ zip <dest_filename>.zip <py_file>.py 製作 python zip 檔後上傳函式),函式中有使用到 requests 這個套件,執行 Test 時會顯示 No module named 'requests',原因就是 AWS Lambda 預設是沒有 requests 這個套件的,需要另外上傳套件檔,以下是解決方法。

  1. 安裝所需套件至 python 資料夾
  2. 打包 python 套件資料夾為 zip 檔
  3. 建立新 Layer
  4. 將 Layer 新增至函式

前兩步驟是在本機完成,後兩步驟是在 AWS 上進行,接下來將詳細解說各步驟。

1. 安裝所需套件至 python 資料夾

AWS 官方文件說額外的套件必須使用 「python」 這個名稱的資料夾打包,所以要在專案資料夾內建立一個 python 資料夾,並將套件安裝到裡面,詳細 Terminal 指令如下:

$ mkdir python
$ cd python

# 安裝單一套件
$ pip install --target . requests

# 一次安裝多個套件
$ pip install --target . -r requirements.txt
閱讀更多»