实战AWS lambda 部署Python FastAPI

一 背景

AWS Lambda 是亚马逊云计算服务提供的无服务器计算服务,用于运行代码而无需管理服务器。Python FastAPI 是一个快速(高性能)的 Web 框架,用于构建 API。将两者结合使用可以实现快速部署和扩展的 API 服务。

要在 AWS Lambda 上部署 Python FastAPI,首先需要创建一个 Lambda 函数,并选择适当的运行时环境,例如 Python 3.8。然后,在函数代码中安装 FastAPI 和其他依赖项,并编写 FastAPI 应用程序代码。

接下来,需要配置 API 网关作为 Lambda 函数的触发器,以便能够通过 HTTP 请求访问 API。这可以通过 AWS 控制台或 AWS CLI 完成。一旦配置完成,就可以通过 API 网关的终端节点访问部署在 Lambda 上的 FastAPI 应用程序。

在部署过程中,还需要为 Lambda 函数分配合适的资源和设置适当的安全性措施。可以调整内存和执行时间限制,以确保函数能够处理预期的负载。此外,还可以配置 VPC 和安全组等设置,以实现网络隔离和访问控制。

通过 AWS Lambda 部署 Python FastAPI,可以轻松构建可扩展的 API 服务,并利用 AWS 的弹性和可靠性来处理高流量和动态负载。这种无服务器架构减少了服务器管理的复杂性,使开发人员能够专注于业务逻辑的实现和快速迭代。

二 概述

AWS Lambda和Python FastAPI是两个强大的工具,结合使用可以实现快速部署和扩展的API服务。AWS Lambda是无服务器计算服务,通过它可以运行代码而无需管理服务器。Python FastAPI是一个高性能的Web框架,用于构建API。在部署Python FastAPI到AWS Lambda的过程中,首先需要创建Lambda函数并选择适当的运行时环境。然后,在函数代码中安装FastAPI和其他依赖项,并编写FastAPI应用程序代码。接下来,配置API网关作为Lambda函数的触发器,以便通过HTTP请求访问API。在部署过程中,需要为Lambda函数分配适当的资源,设置适当的安全性措施,并调整内存和执行时间限制以处理预期的负载。通过AWS Lambda部署Python FastAPI,可以快速构建可扩展的API服务,并利用AWS的弹性和可靠性来处理高流量和动态负载。这种无服务器架构减少了服务器管理的复杂性,使开发人员能够专注于业务逻辑的实现和快速迭代。

三 实战

3.1 Python 环境准备

利用anaconda 创建虚拟环境

shell 复制代码
$ conda create -n fastapi python=3.10
$ conda activate fastapi
# 安装软件包
$ pip3 install fastapi uvicorn mangum
$ pip3 freeze > requirements.txt

# 仅保留一下内容
fastapi==0.109.2
mangum==0.17.0
uvicorn==0.27.1

3.2 代码开发

创建main.py 内容如下

python 复制代码
from fastapi import FastAPI
from mangum import Mangum

app = FastAPI()
handler = Mangum(app)

@app.get("/")
async def hello():
    return {"message": "aws lambda fastapi"}

启动服务测试

shell 复制代码
uvicorn main:app --reload

浏览器测试

3.3 代码打包

将依赖下载至项目文件中

shell 复制代码
# 为了跨平台下载包
$ pip3 install --platform manylinux2014_x86_64 -t dependencies -r requirements.txt --only-binary=:all:
$ (cd dependencies; zip ../aws lambda artifact.zip -r .)

将main.py 打包至文件内

shell 复制代码
$ zip aws lambda artifact.zip u main.py
        zip warning: name not matched: lambda
        zip warning: name not matched: artifact.zip
        zip warning: name not matched: u
  adding: main.py (deflated 23%)

3.4 Lambda函数创建

在AWS web控制台创建函数

上次打包好的文件

修改运行时设置修改为main.lambda_handler

3.5 浏览器测试

利用浏览器直接测试

3.6 创建Amazon API Gateway 暴露API

选择REST API

创建对应操作

选择创建方法

完成创建

利用内部进行测试

创建部署

使用测试进行测试

注意事项

  1. 内存和执行时间限制:根据应用程序的需求,合理设置Lambda函数的内存和执行时间限制。确保函数具有足够的资源来处理预期的负载和运行时间。
  2. 依赖项管理:确保在Lambda函数中正确安装和管理FastAPI及其相关依赖项。可以使用虚拟环境或打包依赖项以确保函数的一致性和可靠性。
  3. 安全性配置:根据需要配置适当的安全性措施,例如配置访问权限、使用密钥管理服务(KMS)对敏感数据进行加密等。确保函数和应用程序的安全性。
  4. 日志和错误处理:配置适当的日志记录,以便能够跟踪和调试Lambda函数的运行。实现适当的错误处理和异常处理机制,以提高应用程序的可靠性和可维护性。
  5. 监控和扩展性:设置监控和警报,以便能够实时监视Lambda函数的性能和运行状况。根据需要进行扩展,使用AWS自动扩展功能以应对高流量和动态负载。
  6. 成本优化:根据函数的使用情况和负载模式,优化Lambda函数的配置,以减少不必要的资源使用和成本开销。
  7. 测试和部署策略:在部署之前进行充分的测试,并采用适当的部署策略,例如使用无损部署或灰度发布,以确保平滑的过渡和最小化影响。

总结

AWS Lambda和Python FastAPI的结合为快速部署和扩展API服务提供了一种强大的解决方案。通过AWS Lambda的无服务器计算服务,可以轻松运行FastAPI应用程序而无需管理服务器。FastAPI作为高性能的Web框架,提供了快速构建API的能力。部署过程涉及创建Lambda函数、安装依赖项、配置API网关等步骤。通过调整资源分配和安全性措施,可以实现高流量和动态负载的处理。无服务器架构减少了服务器管理的复杂性,让开发人员能够专注于业务逻辑的实现和快速迭代。AWS Lambda和Python FastAPI的结合为构建可扩展的API服务提供了灵活、可靠和高性能的解决方案。

参考链接

相关推荐
羊小猪~~3 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang5 分钟前
python如何使用spark操作hive
hive·python·spark
q0_0p6 分钟前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码10 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇11 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
华清远见IT开放实验室19 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
mqiqe43 分钟前
Elasticsearch 分词器
python·elasticsearch
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
幽兰的天空3 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
网易独家音乐人Mike Zhou6 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot