FastAPI AWS Lambda 示例项目教程
1. 项目的目录结构及介绍
fastapi-aws-lambda-example/
├── README.md
├── app
│ ├── __init__.py
│ ├── main.py
│ ├── requirements.txt
│ └── utils.py
├── template.yaml
└── tests
└── test_main.py
- README.md: 项目说明文档。
- app/: 包含项目的主要代码文件。
- init.py: 使
app
目录成为一个 Python 包。 - main.py: 项目的入口文件,包含 FastAPI 应用的定义和路由。
- requirements.txt: 项目依赖的 Python 包列表。
- utils.py: 包含一些辅助函数或工具类。
- init.py: 使
- template.yaml: AWS SAM 模板文件,用于定义 AWS Lambda 和 API Gateway 的配置。
- tests/: 包含项目的测试文件。
- test_main.py: 针对
main.py
的测试文件。
- test_main.py: 针对
2. 项目的启动文件介绍
app/main.py
是项目的启动文件,主要包含 FastAPI 应用的定义和路由。以下是 main.py
的关键部分代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello World"}
- FastAPI 应用定义:
app = FastAPI()
创建了一个 FastAPI 应用实例。 - 路由定义:
@app.get("/")
定义了一个 GET 请求的路由,当访问根路径时,返回一个 JSON 对象{"message": "Hello World"}
。
3. 项目的配置文件介绍
template.yaml
是 AWS SAM 模板文件,用于定义 AWS Lambda 和 API Gateway 的配置。以下是 template.yaml
的关键部分代码:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
FastAPILambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.main.handler
Runtime: python3.8
CodeUri: .
Events:
HelloWorld:
Type: Api
Properties:
Path: /
Method: get
- AWSTemplateFormatVersion: 定义了模板格式的版本。
- Transform: 指定了 AWS SAM 的转换类型。
- Resources: 定义了 AWS 资源。
- FastAPILambdaFunction: 定义了一个 AWS Lambda 函数。
- Handler: 指定了 Lambda 函数的处理程序为
app.main.handler
。 - Runtime: 指定了运行时环境为
python3.8
。 - CodeUri: 指定了代码的位置。
- Events: 定义了触发 Lambda 函数的事件。
- HelloWorld: 定义了一个 API 事件,当访问根路径的 GET 请求时触发 Lambda 函数。
- Handler: 指定了 Lambda 函数的处理程序为
- FastAPILambdaFunction: 定义了一个 AWS Lambda 函数。