为什么我们要在单个Lambda函数中托管.NET Core Web应用程序?

时间:2017-09-27 05:18:06

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

我目前唯一想到的是ASPNET的启动时间。敲一个端点可能很容易花费大约5秒钟,如果它引入了很多程序集并且您正在运行一个小的Lambda(即256MB),则可能要花费更多时间

答案 1 :(得分:0)

对于小型项目(通常是儿童学校的志愿者项目),我通常可以停留在免费套餐内,特别是如果我正在像使用数据存储一样使用DynamoDB时。对于具有更高性能要求的工作,我将它们部署到一个自动缩放的EC2组。

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

为简单起见,我确实将所有Web API函数都构建到一个应用程序中。这将是部署到EC2时的规范。部署为Lambda时会带来一些负面影响,因为并非所有功能都需要相同的资源,因此即使大多数调用使用最少的资源就可以正常运行,您也必须为Lambda提供所需的最大资源。为了提高Lambda的效率,可能会将它们分解成几个项目,以部署到不同大小(小,中,大)的Lambda上,但随后我必须维护3个项目,而不是一个。

希望这会有所帮助