🐃
【Hello World⑰】AWS Lambda @ python(FastAPI)
AWSのLambda関数をPython(FastAPI)で作ります
Windows11のDocker環境上で
Python言語のFastAPIを使って、AWSのLambda関数(API)を作ります。
環境
Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.29.0
Visual Studio Code
①フォルダ・ファイルを作成
以下の構成でフォルダとファイルを作ります。
フォルダ構成
lambda
├─app
│ └─app.py
└─Dockerfile
ファイルには以下の内容を記載します。
PowerShell
mkdir lambda ;`
cd lambda ;`
mkdir app ;`
New-Item Dockerfile ;`
New-Item app/app.py ;`
code Dockerfile ;`
code app/app.py
Dockerfile
FROM public.ecr.aws/lambda/python:3.10
COPY app/app.py ${LAMBDA_TASK_ROOT}
RUN pip install fastapi==0.109.2 mangum==0.17.0
CMD ["app.handler"]
app.py
from fastapi import FastAPI
from mangum import Mangum
app = FastAPI()
@app.get('/')
async def root():
return {"message": "Hello World by FastAPI running in Lambda on Docker"}
handler = Mangum(app)
②コンテナを起動
以下のコマンドを実行し、Dockerのイメージを作成してコンテナを起動します。
PowerShell
docker build -t lambda . ;`
docker run --rm --name lambda -p 9000:8080 -d lambda
③Hello Worldが表示されることを確認
以下のコマンドでLambdaへリクエストを送り、Hello Worldの応答があることを確認します。
PowerShell(実行するコマンド)
Invoke-RestMethod `
-Method Post `
-Uri "http://localhost:9000/2015-03-31/functions/function/invocations" `
-Body '{"resource": "/", "path": "/", "httpMethod": "GET", "requestContext": {}}'
PowerShell(応答の内容)
statusCode : 200
headers : @{content-length=64; content-type=application/json}
multiValueHeaders :
body : {"message":"Hello World by FastAPI running in Lambda on Docker"}
isBase64Encoded : False
Discussion