AWS Lambda 与 Elastic Beanstalk

Posted

技术标签:

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

我是 aws 新手。

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

我决定使用

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

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

    AWS Lambda 函数 + api 网关

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

    弹力豆茎

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

请指导我

【问题讨论】:

我不知道您的项目的具体情况,但可能的用例是需要大量处理的应用程序,但并非一直如此。您的应用服务器可能使用 Dynamo 在 EC2 上运行,而 S3 则用于静态内容。无论您的应用程序在哪里需要繁重的处理,都可以将其放在 Lambda 上。您只需为功能运行的时间付费。比处理器过载时自动缩放整个堆栈更便宜、更快。 【参考方案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 上构建整个应用程序?它是否具有成本效益? 它确实具有成本效益。当没有人使用您的网站或应用程序时,资源会回到零,并且您无需支付任何费用,直到下一次调用。对于“整个应用程序”的部分,我会说我不确定,但我很肯定现在有可能。我需要更多信息来告诉你你会怎么做。

以上是关于AWS Lambda 与 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

将 MongoDB 与 AWS Elastic Bean 应用程序一起使用

尝试通过 Elastic Bean 在 AWS 上部署我的应用程序时出错

在 Elastic Beanstalk 和 AWS Lambda 上更新 nodejs API

如何在aws elastic bean上安装redis和celery

AWS Firehose 到 Elastic Search - 将一条 Firehose 记录转换为多个 Elastic 条目

AWS Elastic Beanstalk 部署的 ActionType 在哪里?