AWS Lambda与Elastic Beanstalk

San*_*uma 7 amazon-dynamodb amazon-elastic-beanstalk aws-lambda asp.net-core-webapi aws-cognito

我是aws的新手.

我将开发一个REST完整的应用程序,它将在aws上主持.

我决定用

  • Amazon S3用于静态内容
  • 用于身份验证的Amazon Cognito用户池
  • Amazon DynamoDB为db

我对我的应用程序托管位置感到困惑.我有2个想法.

  1. AWS Lambda Function + api网关

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

  1. Elastic Beanstalk

我可以将所有上述aws服务与它集成吗?(.net core web api 2.0上的后端)

请指导我

ami*_*ttn 13

弹性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通过调用一系列相互调用的lambda函数来创建RESTful API.

Elastic Beanstalk基本上将处理EC2实例配置,负载平衡或扩展等(不与lambdas).

您甚至可以将Elastic Beanstalk和Lambda一起使用.EC2上的轻量级应用程序由Elastic Beanstalk管理,可以使用Lambda进行重载处理.该应用程序可以在低价实例上运行,Lambda的成本将远远低于其他必要的高端实例.

Lambda确实有一些硬限制.请求正文有效负载不能超过6 MB.请求的持续时间不能超过300秒.这使得它不适合传递大块数据或等待很长时间的函数,但通常有解决方法.

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


San*_*uma 11

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

是的。有可能将 API Gateway + Lambda 用于整个应用程序作为后端。但是您必须从前端管理大部分应用程序逻辑。在那里您必须承担风险,因为公众可以查看源代码。

将所有业务逻辑保留在客户端代码中并不是一个好习惯。并且在 Lambda 中保留所有逻辑也不容易或具有成本效益。原因是当你制作一个真实世界的应用程序时,你将需要成千上万的功能。要完成一项任务,您将不得不调用许多函数(然后是函数运行时)。所以会很贵。

最好的解决方案是在Elastic Beanstalk上托管后端,在 S3上托管前端。如果你有什么繁重的任务?那么您可以为此创建 Lambda 函数。

Lambda 最适合 CPU 有界函数。但不要把所有的应用程序逻辑都放在上面。