AWS Lambda与Elastic Beanstalk

时间:2018-09-09 05:43:48

标签: aws-lambda amazon-dynamodb asp.net-core-webapi aws-cognito amazon-elastic-beanstalk

我是aws的新手。

我要开发一个完整的REST应用程序,它将在AWS上托管。

我决定使用

  • 用于静态内容的Amazon S3
  • 用于身份验证的Amazon Cognito用户池
  • 作为数据库的Amazon DynamoDB

我对应用的托管位置感到困惑。我有两个想法。

  1. AWS Lambda函数+ API网关

我可以在其上实现整个应用程序吗?

  1. 弹性豆茎

我可以将上述所有aws服务与之集成吗? (.net核心Web API 2.0后端)

请引导我

3 个答案:

答案 0 :(得分:7)

弹性Benstalk 使用Elastic Beanstalk,您可以访问平台即服务(PaaS),并且可以管理基础架构的某些方面。开发人员可以在平台上创建,测试和部署应用程序。您无需处理配置,负载平衡或扩展。 Elastic Beanstalk支持许多服务器环境,包括Apache HTTP Server,Nginx,Microsoft IIS和Apache Tomcat。它对Docker容器具有强大的支持,可轻松部署应用程序。

开发人员可以使用命令行或Elastic Beanstalk管理控制台。通过控制台,他们可以设置配置以及管理环境和应用程序。

Lambda 上传到Lambda的开发人员不必处理其代码的环境。这是一项“无服务器”服务,可让外部代码或事件调用函数。 Lambda不存储数据,但允许访问其他存储的数据。真正使Lambda更具吸引力的是,除了实际运行代码外,您无需支付任何费用。您可以从应用程序中抽出大量计算内容,然后以非常低的成本将它们部署在Lambda上。

AWS Step Functions实现一个状态机,使您可以调用一系列Lambda函数并处理错误情况。 Lambda函数可以用作在其他地方运行的应用程序的后端,或者甚至可以使用一系列lambda函数来创建Web应用程序。

是的,您可以使用无服务器架构lambda,API Gateway,S3,SQS,SNS,cognito,DynamoDB创建RESTful API,方法是依次调用一系列lambda函数。

Elastic Beanstalk将基本上处理EC2实例设置,负载平衡或扩展等(不适用于lambda)。

您甚至可以一起使用Elastic Beanstalk和Lambda。通过Elastic Beanstalk管理的EC2上的轻量级应用程序可以使用Lambda进行繁重的处理。该应用程序可以在低价实例上运行,而Lambda的成本将明显低于否则需要的高端实例。

Lambda确实有一些硬性限制。请求正文的有效载荷不能超过6 MB。请求的持续时间不能超过300秒。这使得它不适合传递大型数据块或等待很长时间的函数,但是通常会有变通办法。

还有部署限制;部署程序包不能超过50 MB。 Lambda代码可以包含现有的库,但是很大的库可能是个问题。

答案 1 :(得分:2)

作为使用云的经验,在1y 6m之后,我可以针对自己的问题给出正确的答案。

是的。 可以将整个应用程序的API Gateway + Lambda用作后端。但是您必须从前端管理大多数应用程序逻辑。在此必须冒风险,因为源代码可以被公众查看。

在客户端代码中保留所有业务逻辑不是一个好习惯。而且,将所有逻辑保留在Lambda中也不容易或不符合成本效益。原因是当您制作一个真实世界的应用程序时,您将需要成千上万的功能。要完成一项任务,您将必须调用许多函数(然后将其作为函数运行时)。因此它将非常昂贵。

最佳解决方案是将后端托管在 Elastic Beanstalk 上,并将前端托管在S3上。如果您有繁重的任务?那么您可以为此实现Lambda函数。

Lambda最适合CPU受限功能。但不要在上面包含所有应用程序逻辑。

答案 2 :(得分:0)

由于您可能对管理基础系统不感兴趣,因此应选择AWS Lambda + API Gateway。