【问题标题】:AWS Lambda vs Elastic BeanstalkAWS Lambda 与 Elastic Beanstalk
【发布时间】:2019-02-13 22:30:32
【问题描述】:

我是 aws 新手。

我将开发一个在 aws 上托管的 REST 完整应用程序。

我决定使用

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

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

  1. AWS Lambda 函数 + api 网关

我可以在上面实现整个应用吗?

  1. 弹力豆茎

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

请指导我

【问题讨论】:

  • 我不知道您的项目的具体情况,但可能的用例是需要大量处理的应用程序,但并非一直如此。您的应用服务器可能使用 Dynamo 在 EC2 上运行,而 S3 则用于静态内容。无论您的应用程序在哪里需要繁重的处理,都可以将其放在 Lambda 上。您只需为功能运行的时间付费。比处理器过载时自动缩放整个堆栈更便宜、更快。

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


【解决方案1】:

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

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

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

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

Lambda 最适合 CPU 受限函数。但不要将所有应用程序逻辑放在上面。

【讨论】:

  • 嗨,Sanuja,我有类似的问题。我做过 S3 + Elastic Beanstalk 的方式,我正在学习 API Gateway + Lambda 的方式,我的问题是如果你使用的是 AWS Amplify API,是不是意味着你必须使用 API Gateway 和 Lambda?
  • @ascetic652 不,一点也不。由于 Amplify 提供了自己的 GraphQL API,因此您可以在没有 API Gateway 和 Lambda 的情况下继续操作。但是,如果您有任何 CPU 受限函数,最好为它们创建一个单独的 Lambda。另外,如果你有多个微服务,最好使用 API 网关,而不是单独调用每个微服务。
【解决方案2】:

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

【讨论】:

  • 是否可以在 lambda 上构建整个应用程序?它是否具有成本效益?
  • 它确实具有成本效益。当没有人使用您的网站或应用程序时,资源会回到零,并且您无需支付任何费用,直到下一次调用。对于“整个应用程序”的部分,我会说我不确定,但我很肯定现在有可能。我需要更多信息来告诉你你会怎么做。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 2021-07-11
  • 2019-01-04
  • 2017-01-17
相关资源
最近更新 更多