gpt4 book ai didi

通过 AWS Lambda 部署 Flask Web 应用程序

转载 作者:行者123 更新时间:2023-12-04 09:33:48 25 4
gpt4 key购买 nike

我对 AWS Lambda 非常陌生,并且根据我在网上找到的许多示例(+阅读无尽的文档)来努力理解它的功能。我了解使用此类服务​​的主要目标是通过允许 Lambda 和 API Gateway 承担管理您的服务器的角色来实现一个成本低且可能省力的无服务器架构(因此无服务器并不意味着您不使用一台服务器,但架构会为您处理事情)。我将我的研究组织为开发人员在将 Flask Web 应用程序部署到 Lambda 时采用的两种通用方法:

  • 部署整个应用程序使用 zappa 和 zappa 配置(json 文件)对 Lambda 进行 API 网关身份验证。
  • 部署只有函数 ,将用户输入转换为后端端点期望的表单的解析黑盒(以及向后)-> 从配置 Lambda 代理的 API 网关获取代理 url -> 有一个使用该 url 的单独应用程序

  • (然后是 3 个,它不使用 API Gateway,而是在应用程序本身中调用 Lambda 函数——但我真的很想亲 body 验使用 API Gateway)
    以下是我对上述两种方法中的每一种方法的问题:
    对于 1,我不明白 Lambda 如何调用 Flask 应用程序中的函数。根据我的理解,Lambda 只调用有参数 event 和 context 的函数——或者是 url 调用(API 网关制定的 url)实际上是调用 Flask 应用程序中单独函数的事件,从而使 Lambda 能够作为一个'无服务器的环境——这对我来说没有意义,因为在我分析的大多数示例中,事件是用户输入数据。这意味着应用程序中的一些函数没有事件,而一些函数没有事件,这意味着 Lambda 以某种方式神奇地找出了如何处理不同的函数调用?
    我也知道 Lambda 确实容量有限,所以这是最好的方法吗?这似乎是在 Lambda 上部署 Web 应用程序的标准方式。
    对于 2,我了解将 API 网关 URL 合并到 Flask 应用程序中的步骤。因此,Flask 应用程序将使用 url 访问 Lambda 函数并拥有 HTTP 端点供用户访问。但是,这意味着,如果我的本地计算机上有 Flask 应用程序,则只有当我在我的计算机上运行该应用程序时才会托管该应用程序——我希望它具有持久的公共(public)访问权限(希望如此)。我阅读了有关 AWS Cloud9 的信息——这会是一个好的解决方案吗?我应该在哪里部署应用程序本身来优化这个架构 - 而不使用带走架构的无服务器性的服务(比如 EC2 实例可能或在 S3 上,我将在其中放置我的前端 html 文件并托管一个网站)?另外,回到 1(对不起,我试图以一种连贯的方式组织我的想法,但它运行得不太好),只要我让 API Gateway 端点保持打开状态,应用程序会持续运行吗?
    我不知道使用 AWS Lambda 和 API Gateway 部署 Flask 应用程序的最佳实践是什么,但根据我的发现,以上两个是最常用的。如果您能回答我的问题,那将非常有帮助,这样我就可以真正开始使用 AWS Lambda!谢谢! (+我确实阅读了所有的亚马逊文档,这些是我开始试验之前剩下的最后几个问题:))

    最佳答案

  • Zappa 有自己的代码来处理请求并使它们与“Flask”格式兼容。请记住,在使用 Lambda 的任何一种情况下,您都没有真正按照预期使用 Flask。只有在调用时才会调用 Lambda,flask 通常会继续运行以查找请求。但是持续运行的部分由这里的 API 网关处理。 Zappa 本质上在 API 网关上创建了一个 ANY 请求,这个请求被传递给你的 lambda 处理程序,它解释它并使用它来调用你的 flask 函数。
  • 如果您正在构建 API Gateway + Lambda,则不需要使用 Flask。简单地创建一个由 API 网关传递给 lambda 处理程序的参数调用的函数会容易得多。您可以在 S3 上托管的前端应用程序(如果它是静态的或 Angular 的)。

  • 我想说这里的最佳做法是不使用 Flask 并使用 API Gateway + Lambda 选项。这使您可以对 API 进行自定义安全性和检查,并使应用程序更加稳定,因为每个请求都有自己的 lambda。

    关于通过 AWS Lambda 部署 Flask Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62688990/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com