【问题标题】:Is it a good idea to use Python SQLAlchemy in AWS Lambda?在 AWS Lambda 中使用 Python SQLAlchemy 是个好主意吗?
【发布时间】:2020-02-08 23:36:37
【问题描述】:

Amazon 建议不要在 lambda 函数中包含大型库/依赖项。 据我所知,SQLAlchemy 是一个相当大的 Python 库。你认为在 lambda 函数中使用它是个好主意吗?一种选择是将其作为 Lambda 层包含在所有相关的 Lambda 函数中。

无论如何,最好的做法是什么?

【问题讨论】:

标签: python sqlalchemy aws-lambda serverless-framework aws-lambda-layers


【解决方案1】:

根据我的阅读,SQLAlchemy 在内存缓存中执行它已读取的数据并将其用于将来的调用。根据您正在做的事情,最好检查一下 SQLAlchemy 缓存策略,这样另一个 Lambda 就不会使用 SQLAlchemy 更改第一个 lambda 下的数据。

【讨论】:

    【解决方案2】:

    无服务器函数是小型自包含函数。 SQLAlchemy 是一个 ORM,它允许您像操作 python 中的对象一样操作数据库对象。如果您只是编写一些无服务器函数,那么您是数据库上的平均 CRUD 操作,您最好通过编写字符串并通过数据库驱动程序直接执行它来编写 SQL(无论如何您都必须安装它) ,即使您使用的是 sqlalchemy)。如果您在 AWS Lambda 之上构建自己的框架,那么也许可以考虑使用 sqlalchemy。

    【讨论】:

    • 请注意“通过组合字符串编写 SQL”是危险的,可能会导致 SQL 注入问题。
    【解决方案3】:
    • 您认为在 lambda 函数中使用 SQLAlchemy 是个好主意吗?

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

    • 无论如何,最佳做法是什么?

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

    【讨论】:

    • 感谢您的回答!尽管您的回答对 AWS DynamoDB 和 SQL RDS 进行了很好的比较,但它并不能完全回答我的问题。当已经选择 SQL 数据库时,更多的是关于在 Lambda 函数中使用 SQLAlchemy 作为 Python 库。我可以把你的回答算作“可以使用这个库”吗?
    • @fd.huseynov 是的,但请考虑您是否真的需要 SQLAlchemy,或者它是否会使事情变得更加困难。如果您选择 MySQL,那么您通常可以使用 pymysql (pypi.org/project/PyMySQL) 解决所有问题,并且添加 SQLAlchemy 会增加复杂性。但是,如果您在 Python 中有一个类库,并且希望将它与对象关系模型一起使用,那么 SQLAlchemy 可能是一个不错的选择。这将取决于您的情况和您的项目要求。我有一个基于连接到 AWS Lambda 的 SQL RDS 的大型项目,我们没有使用 SQLAlchemy。这当然不是必须的。
    • 这并没有回答问题,他是在询问是否在 lambda 中包含 ORM,而不是询问要使用什么数据库。
    猜你喜欢
    • 2020-03-28
    • 2017-08-15
    • 1970-01-01
    • 2021-06-10
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    相关资源
    最近更新 更多