【问题标题】:Why would we want to host a .NET Core Web Application inside a single Lambda function?为什么我们要在单个 Lambda 函数中托管 .NET Core Web 应用程序?
【发布时间】:2017-09-27 05:18:06
【问题描述】:

我一直在阅读 Amazon Lambda 并尝试创建要使用的 Web API。我的理解是,随着每个函数的创建,我们可以创建一个资源来指向该函数,并且每个函数都将独立于任何其他函数。如果我们想使用共享库,我们可以在函数本身中执行此操作,或者让 API 网关调用中间函数,然后将适当的请求代理到最终函数以创建响应。

添加了一个可以在 AWS Lambda 上托管的 Web API 解决方案,如果我们只是要部署整个应用程序,我们为什么要在 lambda 上托管一个完整的 Web 应用程序,而 EC2 实例可以提供更多控制权?

【问题讨论】:

  • 因为 lambda 不适合呈现 UI 的 Web 应用程序。但它更适合Web API类的应用程序,它没有任何状态管理,处理http请求并以json或xml等简单格式返回响应。您获得的优势是无需担心维护物理服务器的无服务器部署。不用担心修补它们和空间问题。监控功能开箱即用。
  • 它被称为 PaaS(平台即服务)。您只需运行您的应用程序,而不必担心发生的地点或方式。 Amazon 负责创建服务器、使其保持最新状态、分配负载、优化内存和 CPU 利用率等。您只需要担心您的应用程序。

标签: c# amazon-web-services asp.net-web-api lambda asp.net-core


【解决方案1】:

我将 Lambda 用于我的一个 .NET Core Web API 项目,目前看来还可以。主要好处是:

  • 很容易部署到不同的环境/阶段
  • 不必担心服务器和负载平衡器
  • 如果应用程序的使用频率不高(即无需 24/7 全天候运行服务器),成本效益可能会更高API 网关缓存)

目前我能想到的唯一负面的事情是 ASPNET 的启动时间。访问 cold 端点很容易花费大约 5 秒,如果它引入大量程序集并且您在小型 Lambda(即 256MB)上运行,则可能需要更多时间

【讨论】:

    【解决方案2】:

    对于小型项目(通常是儿童学校的志愿者项目),我通常可以留在免费套餐内,尤其是当我使用 DynamoDB 作为数据存储时。对于具有更高性能要求的工作,我将它们部署到 EC2 的自动扩展组中。

    我真正喜欢将 AWS 模板用于“ASP.Net Core Web API”的地方在于,我可以将它们开发为控制台应用程序,然后将它们构建并部署到 EC2 或无服务器 Lambda 项目(或有时两者兼有) )。

    为简单起见,我将所有 Web API 函数都构建到一个应用程序中。这将是部署到 EC2 时的常态。部署为 Lambda 时有一些负面影响,因为并非所有函数都需要相同的资源,因此您必须为 Lambda 提供所需的最大资源,即使大多数调用可以使用最少的资源运行良好。为了更有效地使用 Lambda,可能会将它们分解为多个项目以部署到不同大小(小型、中型、大型)的 lambda,但是我必须维护 3 个项目而不是一个。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2021-08-04
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多