实战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服务提供了灵活、可靠和高性能的解决方案。

参考链接

相关推荐
leaf_leaves_leaf17 分钟前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零122 分钟前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound29 分钟前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx41 分钟前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe41 分钟前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机
落魄实习生1 小时前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
苏言の狗1 小时前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习
用余生去守护1 小时前
python报错系列(16)--pyinstaller ????????
开发语言·python
数据小爬虫@1 小时前
利用Python爬虫快速获取商品历史价格信息
开发语言·爬虫·python
是Dream呀2 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络