搜索
首页后端开发Python教程无服务器 FastAPI 开发:在 AWS 上构建 Player FC API

我已经有一段时间没有机会构建一些简单、有趣和现代的东西了。到 2024 年年底,我偶然发现了 FastAPI,并感到很兴奋,虽然我之前在工作中构建过内部 API,但尚未创建任何面向公众的内容。

你好 FastAPI!

FastAPI 是一个现代、强大的框架,用于使用 Python 构建 API,它似乎非常适合我想要构建的内容,即用于基本足球运动员信息的 API。在决定使用“Player FC API”之前,我最初将其称为“Jugador FC”。

配置环境。

开始之前,请确保满足以下要求:

AWS CDK
码头工人
Python 3.12.7

创建项目

在您的计算机上创建一个目录。将其命名为 player_fc_fastapi_app,在此目录中创建以下子目录:

应用程序
    包含所有FastAPI代码
dynamo_db_local
    包含一个 python 脚本,用于创建 Amazon DynamoDB 表的本地版本
iac
    包含用于在 AWS 中创建资源的堆栈文件

我通过提供您可以运行的命令来简化以下操作以节省时间:

项目目录结构现在应如下所示:

设置Python环境

创建目录结构后,创建一个名为requirements.txt的文本文件,并在其中插入以下行:

创建requirements.txt文件后,创建虚拟环境并安装依赖项:

设置 Amazon DynamoDB Local

让我们从设置 DynamoDB 的本地实例开始,这需要安装并运行
Docker

提取图像并启动容器需要几秒钟的时间,完成后我们可以导航到

dynamo_db_local 目录并创建一个 create_ddb_table.py 文件,使用以下代码填充该文件:

使用此代码,您可以在本地 DynamoDB 实例中创建一个表。运行代码片段。 FastAPI开发

现在我们已经启动并运行了

DynamoDB
的本地实例,让我们开始创建应用程序,导航到
app

目录并创建两个文件:main.py 和requirements。 txt.

使用以下内容填充requirements.txt:

创建以下子目录:

模特
     Pydantic 玩家模型<script></script> <script></script>路由器<script></script><script></script>      包含路线<script></script> <script></script> <script></script> <script></script>

让我们使用 Pydantic 创建几个模型,我们将使用 Player 和 UpdatePlayer 模型来定义我们可以添加或修改的玩家信息的数据结构。

models 子目录中,创建一个空的 __init__.py 文件和一个名为players.py 的文件,并填充以下代码:

routers

子目录中,创建一个空的__init__.py文件和一个名为players.py的文件,并填充以下代码:

创建一个空的 __init__.py 文件会将文件夹变成 Python 包。

app
子目录中创建一个名为 main.py 的文件,并开始使用以下代码填充它:

试驾 是时候进行快速测试了,确保您位于 app

目录中并运行以下命令来启动
Uvicorn
:

现在我们的应用程序已启动并运行,导航至

http://127.0.0.1:8000/docs/

FastAPI Swagger Documentation

您将看到自动交互式 API 文档,其中有 6 个可用端点:

让我们尝试添加一个玩家。选择

POST /players
端点,选择
尝试一下

按钮并使用以下有效负载添加世界上最好的玩家“Vinícius Júnior”:

以下是每个 API 操作的实际效果。

Add Player

添加新玩家:

Get All Players

检索所有玩家:

Update Player

更新玩家信息:

Get Player

获取单人游戏详细信息:

Delete Player

删除玩家:

使用 AWS CDK v2 进行部署

现在我们已经可以在本地运行和测试我们的应用程序了,是时候在 AWS 上部署我们的应用程序了。我们将使用 AWS CDK v2。
导航到 <script></script>iac<script></script> 目录,运行以下命令来初始化 cdk 项目:<script></script> <script></script> <script></script> <script></script>

修改子目录中的requirements.txt文件,添加以下行:

让我们定义一个 DynamoDB 表、Lambda 函数和 Lambda 函数 url。在当前的 iac 目录中,您需要导航到另一个子目录 (iac

)。打开 iac_stack.py 文件,将 CDK 堆栈的内容替换为以下代码:

在启动部署之前,我们还有最后一步,将 app/routers 目录下的players.py 文件中的 local_development: bool 标记设置为

False

激活
iac
目录中的虚拟环境并使用以下命令安装依赖项:

使用 cdk 部署命令部署应用程序。CDK Deploy FastAPI APP
部署完成后,您将在终端输出中看到一个函数 URL,这是您在 AWS 上的 API 端点。

    使用函数 URL 测试所有端点,就像我们在本地测试期间所做的那样。添加玩家后,就可以验证我们的玩家数据是否持续存在或消失在以太中。
  1. 验证一切正常:
  2. 前往AWS 管理控制台
  3. 导航到DynamoDB
  4. 找到玩家桌子
选择

探索表格项目

Player FC DynamoDB Table

您应该在云端看到您的玩家数据:

重要:不要忘记清理资源!当不再需要时,您可以运行 cdk destroy 命令删除所有创建的 AWS 资源。 <script></script>我们从本地 FastAPI 开发到 AWS 上的无服务器部署的旅程就结束了。<script></script> <script></script> <script></script>

以上是无服务器 FastAPI 开发:在 AWS 上构建 Player FC API的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何解决Linux终端中查看Python版本时遇到的权限问题?如何解决Linux终端中查看Python版本时遇到的权限问题?Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

我如何使用美丽的汤来解析HTML?我如何使用美丽的汤来解析HTML?Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

python对象的序列化和避难所化:第1部分python对象的序列化和避难所化:第1部分Mar 08, 2025 am 09:39 AM

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

Python中的数学模块:统计Python中的数学模块:统计Mar 09, 2025 am 11:40 AM

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

如何使用TensorFlow或Pytorch进行深度学习?如何使用TensorFlow或Pytorch进行深度学习?Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

用美丽的汤在Python中刮擦网页:搜索和DOM修改用美丽的汤在Python中刮擦网页:搜索和DOM修改Mar 08, 2025 am 10:36 AM

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

哪些流行的Python库及其用途?哪些流行的Python库及其用途?Mar 21, 2025 pm 06:46 PM

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

如何使用Python创建命令行接口(CLI)?如何使用Python创建命令行接口(CLI)?Mar 10, 2025 pm 06:48 PM

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器