我对 AWS Lambda 非常陌生,并且根据我在网上找到的许多示例(+阅读无尽的文档)很难理解其功能。我了解使用此类服务的主要目标是通过允许 Lambda 和 API 网关承担管理服务器的角色来实现成本高效且可能省力的无服务器架构(因此无服务器并不意味着您不使用服务器,但架构会为您处理所有事情)。我将研究整理为开发人员将 Flask Web 应用程序部署到 Lambda 时采用的两种常用方法:
使用 zappa 将整个应用程序部署到 Lambda,zappa 配置(json 文件)将进行 API 网关身份验证。
仅部署函数,即解析黑盒,将用户输入转换为后端端点期望的形式(也向后) -> 从配置 Lambda 代理的 API 网关获取代理 URL -> 有一个单独的应用程序,使用网址
(还有 3 个,它不使用 API 网关并调用应用程序本身中的 Lambda 函数 - 但我真的很想获得使用 API 网关的实践经验)
以下是我对上述两种方法的疑问:
对于1,我不明白Lambda如何调用Flask应用程序中的函数。根据我的理解,Lambda 仅调用具有参数 event 和 context 的函数,或者 url 调用(由 API 网关制定的 url)实际上是调用 Flask 应用程序中单独函数的事件,从而使 Lambda 能够充当“无服务器环境 - 这对我来说没有意义,因为在我分析的大多数示例中,事件是用户输入数据。这意味着应用程序中的某些函数没有事件,而有些则有事件,这意味着 Lambda 以某种方式神奇地找出如何处理不同的函数调用?
我也知道Lambda的容量确实有限,那么这是最好的方法吗?这似乎是在 Lambda 上部署 Web 应用程序的标准方法。
对于 2,我了解将 API 网关 URL 合并到 Flask 应用程序中的步骤。因此,Flask 应用程序将使用 url …