我正在学习 AWS 云从业者认证,我对 AWS Lambda 和 AWS Elastic Beanstalk 之间的区别感到困惑。 根据我的理解,对于这两种服务,您都将代码上传到 AWS,而 AWS 本质上会为您管理底层基础设施。
我知道使用 Lambda,您可以将代码上传到“Lambda 函数”并设置代码执行时的触发器。
使用 AWS EB,您可以上传应用程序代码,EB 会自动处理部署、容量、配置等...
当您将代码上传到两者并且都处理底层实例/环境时,它们听起来非常相似。
谢谢!
Elastic beanstalk 和 lambda 非常不同,尽管某些功能可能看起来相似。在较高级别上,Elastic beanstalk 部署长时间运行的应用程序,而 lambda 部署短时间运行的代码函数
Lambda 最多可以运行 15 分钟,而 EB 可以连续运行。一般来说,我们在 EB 上部署网站/应用程序,而 lambda 通常用于触发功能,例如当图像上传到 S3 时处理图像。
Lambda 一次只能处理一个请求,而 EB 可以处理的并发请求数量取决于您的底层基础设施。因此,如果您有 100 个请求,将创建 100 个 lambda,而这 100 个请求可以由 EB 中的一个底层 EC2 实例处理
Lambda 是无服务器的(底层基础设施完全从开发人员那里抽象出来)。而 EB 是基础设施配置的自动化。您仍然可以在 AWS 控制台中看到您的 EC2 实例、负载均衡器、自动扩展组等。您甚至可以通过 ssh/rdp 连接到您的实例并更改正在运行的服务。 AWS EB 还允许您拥有自定义 AMI。
Lambda 存在冷启动问题,因为在 lambda 中,基础设施需要由 AWS 按需配置,而在 EB 中,您通常已经配置了 EC2 实例来处理您的请求。
SmartCoder 的所有精彩(和考试特定)要点。如果我可以添加一般性辅助评论:
维特根斯坦说:“在大多数情况下,一个词的意义在于它的用途。”我认为这句格言也非常适合软件工程。在您的问题中,这两种 AWS 服务的用途截然不同。
Lambda - 假设您使用 Node.js 开发了一个照片上传应用程序,该应用程序将一些处理后的图像上传到 S3 存储桶。其核心逻辑可能非常简单,并且有一个独特的、独特的任务。只需获取图像,进行一些处理,如果没有任何异常,将其存储在存储桶中。在这种情况下,浪费时间来启动服务器、使用运行时环境配置它们、下载依赖项、维护等是低效的。将代码直接复制并粘贴到 Lambda 控制台中,同时设置一些配置应该可以完成您的工作。另外,您还可以节省大量资金,因为只有在调用 Node.js 函数时才会“配置”基础设施。再次请记住此代码执行单一任务的原理。
Elastic Beanstalk - 上面提到的照片上传系统现在可能会成熟为更复杂的成熟软件应用程序,需要用户管理、身份验证和图像的进一步处理,这当然需要更多的资源配置。该应用程序可能会使用多个代码存储库来完成很多事情,供您管理和部署。然而,您不想花钱聘请 DevOps 工程师或学习使用 CloudFormation 或 Terraform 等 IaC(基础设施即代码)平台。在这种情况下,Elastic Beanstalk 对于没有太多深入 DevOps 知识的开发人员来说非常有用,因为它是一个 PaaS(平台即服务)工具;它几乎为您提供了一个清晰的界面来启动全新的生产就绪系统。
这是我不久前读过的关于上述主题的两篇很好的白皮书。 https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/serverless-architectures-lambda.pdf https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/introduction-devops-aws.pdf
AWS Lambda 适用于小型、事件驱动的函数和微服务,而 Elastic Beanstalk 更适合部署成熟的 Web 应用程序和服务
Lambda 根据特定的触发事件运行..并且一旦工作结束就退出。