在AWS Lambda中使用Python SQLAlchemy是一个好主意吗?

12
亚马逊建议不要在 Lambda 函数中包含大型库/依赖项。据我所知,SQLAlchemy 是一个相当大的 Python 库。您认为在 Lambda 函数中使用它是否是个好主意?一种选择是将其作为 Lambda 层包含,并在所有相关的 Lambda 函数中使用它。
无论如何,什么是最佳实践?

请参阅 https://aws.amazon.com/blogs/database/use-python-sqlalchemy-orm-to-interact-with-an-amazon-aurora-database-from-a-serverless-application/,了解如何使用Python SQLAlchemy ORM与Amazon Aurora数据库进行交互。 - Kai Nacke
3个回答

2

无服务器函数旨在成为小型自包含函数。SQLAlchemy是一个ORM,它允许您像Python对象一样操作数据库对象。如果您只是编写几个执行平均CRUD操作的无服务器函数,则最好通过组合字符串并直接通过数据库驱动程序执行SQL(即使您使用SQLAlchemy,也必须安装该驱动程序)。如果您正在构建自己的AWS Lambda框架,则可以考虑使用SQLAlchemy。


9
请注意,“通过组合字符串编写 SQL 语句” 是危险的,可能会导致 SQL 注入问题。 - blahblah

0
据我所读,SQLAlchemy 对其已读取的数据执行内存缓存,并将其用于未来的调用。根据您的操作,建议查看 SQLAlchemy 缓存策略,以免另一个 Lambda 在 SQLAlchemy 下更改第一个 Lambda 的数据。

-4
  • 你认为在lambda函数中使用SQLAlchemy是一个好主意吗?

是的,但你可能需要先考虑AWS Dynamodb或其他选项。如果SQL是你的要求,那么你可以选择一个带有SQL兼容后端的RDS实例。这完全取决于你在这种情况下的具体需求。这不是一个普遍的要求。

  • 无论如何,什么是最佳实践?

如果你只需要存储一些数据并将数据存储连接到AWS Lambda,则DynamoDB通常是一个不错的选择。如果你已经有一个关系型数据库或者需要执行某些比非关系模型更容易使用SQL的SQL查询,则可以优先选择SQL。


谢谢您的回答!虽然您的回答对AWS DynamoDB和SQL RDS进行了很好的比较,但它并没有完全回答我的问题。更多地是关于在Lambda函数中使用SQLAlchemy作为Python库,当已经选择SQL数据库时。我可以把您的回答看作是“可以使用这个库吗?”吗? - funtik
2
@fd.huseynov 是的,但请考虑您是否真正需要SQLAlchemy,或者它是否会使事情更加困难。如果您选择MySQL,则通常可以使用pymysql解决所有问题(https://pypi.org/project/PyMySQL/),添加SQLAlchemy将增加复杂性。但是,如果您在Python中有一个类库,并希望将其与对象关系模型一起使用,则SQLAlchemy可能是一个不错的选择。这将取决于您的情况和项目要求。我有一个基于连接到AWS Lambda的SQL RDS的相当大的项目,我们没有使用SQLAlchemy。这绝对不是必须的。 - Niklas Rosencrantz
4
这并没有回答问题,他在询问是否可以在Lambda函数中包含ORM,而不是询问要使用哪个数据库。 - Steven Black

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接