搜索
首页后端开发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
python中两个列表的串联替代方案是什么?python中两个列表的串联替代方案是什么?May 09, 2025 am 12:16 AM

可以使用多种方法在Python中连接两个列表:1.使用 操作符,简单但在大列表中效率低;2.使用extend方法,效率高但会修改原列表;3.使用 =操作符,兼具效率和可读性;4.使用itertools.chain函数,内存效率高但需额外导入;5.使用列表解析,优雅但可能过于复杂。选择方法应根据代码上下文和需求。

Python:合并两个列表的有效方法Python:合并两个列表的有效方法May 09, 2025 am 12:15 AM

有多种方法可以合并Python列表:1.使用 操作符,简单但对大列表不内存高效;2.使用extend方法,内存高效但会修改原列表;3.使用itertools.chain,适用于大数据集;4.使用*操作符,一行代码合并小到中型列表;5.使用numpy.concatenate,适用于大数据集和性能要求高的场景;6.使用append方法,适用于小列表但效率低。选择方法时需考虑列表大小和应用场景。

编译的与解释的语言:优点和缺点编译的与解释的语言:优点和缺点May 09, 2025 am 12:06 AM

CompiledLanguagesOffersPeedAndSecurity,而interneterpretledlanguages provideeaseafuseanDoctability.1)commiledlanguageslikec arefasterandSecureButhOnderDevevelmendeclementCyclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesandentency.2)cransportedeplatectentysenty

Python:对于循环,最完整的指南Python:对于循环,最完整的指南May 09, 2025 am 12:05 AM

Python中,for循环用于遍历可迭代对象,while循环用于条件满足时重复执行操作。1)for循环示例:遍历列表并打印元素。2)while循环示例:猜数字游戏,直到猜对为止。掌握循环原理和优化技巧可提高代码效率和可靠性。

python concatenate列表到一个字符串中python concatenate列表到一个字符串中May 09, 2025 am 12:02 AM

要将列表连接成字符串,Python中使用join()方法是最佳选择。1)使用join()方法将列表元素连接成字符串,如''.join(my_list)。2)对于包含数字的列表,先用map(str,numbers)转换为字符串再连接。3)可以使用生成器表达式进行复杂格式化,如','.join(f'({fruit})'forfruitinfruits)。4)处理混合数据类型时,使用map(str,mixed_list)确保所有元素可转换为字符串。5)对于大型列表,使用''.join(large_li

Python的混合方法:编译和解释合并Python的混合方法:编译和解释合并May 08, 2025 am 12:16 AM

pythonuseshybridapprace,ComminingCompilationTobyTecoDeAndInterpretation.1)codeiscompiledtoplatform-Indepententbybytecode.2)bytecodeisisterpretedbybythepbybythepythonvirtualmachine,增强效率和通用性。

了解python的' for”和' then”循环之间的差异了解python的' for”和' then”循环之间的差异May 08, 2025 am 12:11 AM

theKeyDifferencesBetnewpython's“ for”和“ for”和“ loopsare:1)” for“ loopsareIdealForiteringSequenceSquencesSorkNowniterations,而2)”,而“ loopsareBetterforConterContinuingUntilacTientInditionIntionismetismetistismetistwithOutpredefinedInedIterations.un

Python串联列表与重复Python串联列表与重复May 08, 2025 am 12:09 AM

在Python中,可以通过多种方法连接列表并管理重复元素:1)使用 运算符或extend()方法可以保留所有重复元素;2)转换为集合再转回列表可以去除所有重复元素,但会丢失原有顺序;3)使用循环或列表推导式结合集合可以去除重复元素并保持原有顺序。

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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

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