首页 文章

对于.NET项目,Elastic Beanstalk和CloudFormation有什么区别?

提问于
浏览 597
82

我开发了一个.NET MVC应用程序,并开始使用AWS并通过Visual Studio Toolkit进行部署 . 我已使用工具包中的Elastic Beanstalk选项成功部署了应用程序 .

当我查看使用工具包将.NET应用程序部署到AWS的教程时,我注意到有一些教程用于使用both Elastic Beanstalk and CloudFormation进行部署 . 这两者有什么区别?

据我所知,看起来他们两者基本上都在做同样的事情 - 更容易将您的应用程序部署到AWS Cloud (设置EC2实例,负载均衡器,自动扩展等) . 我曾经尝试过阅读它们,但除了一堆对我来说听起来像是同样的嗡嗡声之外,我似乎无法得到任何东西 . 我甚至在AWS网站上发现了一个应该回答这个问题的FAQ,但我真的不明白 .

我应该使用其中一个吗?都?

6 回答

  • 154

    Cloud Formation是一种允许您部署AWS服务的服务 . 您可以创建一个模板文件来描述所需的服务 . 部署该模板时,Cloud Formation会为您创建资源作为“包” . 您在模板中定义的所有资源都会一起启动和终止 . 可以使用Cloud Formation创建的资源类型示例包括:S3,EC2实例,AutoScaling,DynamoDb等 . 对于EC2,Cloud Formation还使您能够使用“cfn-init”脚本;它可以与模板一起使用来引导您的实例 .

    Elastic Beanstalk使用Cloud Formation模板和scipts来:1 . 创建负载均衡器和Auto Scaling组,2 . 将代码复制到S3,3 . 引导Ec2实例以从S3下载代码并进行部署 .

    Cloud Formation并不像EB那样容易使用,但它更强大,因为您可以创建除EC2实例以外的资源,控制cfn-init脚本的方式等 .

  • 25

    还有其他值得注意的差异 . Elastic beanstalk被设计为单个应用程序的容器 . 我有一组网站和服务,但发现使用beanstalk部署多个网站非常困难,经过多次尝试,AWS建议在这种情况下使用 Cloud 形成,因为它具有额外的灵活性 . 这是一篇非常有用的文章,关于引导AWS Cloud 的形成和更新比AWS页面更清晰的运行站点here . 如果我们可以直接从VS部署到存储在S3上的 Cloud 形成模板并使其像beanstalk一样自动更新,那么仍在尝试解决问题...

  • 11

    Elastic Beanstalk自动处理部署,从容量配置,负载 balancer ,自动扩展到基于您上传到的代码的应用程序运行状况监控,其中CloudFormation是一个自动配置引擎,旨在通过JSON脚本部署整个 Cloud 环境 .

  • 10

    为了快速部署标准.NET Web应用程序, Elastic Beanstalk 是适合您的服务 .

    App Services Comparison Graphic

    AWS CloudFormation:“模板驱动的供应”

    AWS CloudFormation为开发人员和系统管理员提供了一种简单的方法来创建和管理相关AWS资源的集合,以有序和可预测的方式配置和更新它们 .

    CloudFormation(CFn)是对现有AWS API的轻量级低级抽象 . 使用静态JSON / YAML template文档,声明一组对应于AWS API上的CRUD操作的Resources(例如EC2 instanceS3 bucket) .

    创建CloudFormation堆栈时,CloudFormation会调用相应的API来创建关联的资源,当您删除堆栈时,CloudFormation会调用相应的API来删除它们 . 支持Most (but not all) AWS APIs .

    AWS Elastic Beanstalk:“Web Apps轻松实现”

    AWS Elastic Beanstalk是一种易于使用的服务,用于在熟悉的服务器(如Apache,Nginx)上部署和扩展使用Java,.NET,PHP,Node.js,Python,Ruby,Go和Docker开发的Web应用程序和服务 . 乘客和IIS . 您只需上传代码,Elastic Beanstalk就可以自动处理部署,从容量配置,负载 balancer ,自动扩展到应用程序运行状况监控 .

    Elastic Beanstalk(EB)是用于托管Web应用程序的更高级别的托管'platform as a service'(PaaS),范围与Heroku类似 . EB不是直接处理低级AWS资源,而是提供一个完全托管的平台,您可以使用web interface,选择应用程序使用哪个platform,创建并上传source bundle,EB处理其余的资源 .

    使用EB,您可以获得monitoring your application environmentdeploying new versions of your application的各种内置功能 .

    在幕后,EB使用CloudFormation来创建和管理应用程序的各种AWS资源 . 您可以通过将CloudFormation Resources添加到与您一起部署的EB configuration file来自定义和扩展默认EB环境应用 .

    结论

    如果您的应用程序是使用Elastic Beanstalk支持的平台之一的标准Web层应用程序,并且您希望为您的应用程序提供易于管理,高度可扩展的托管, use Elastic Beanstalk .

    如果你:

    • 想直接管理所有应用程序的AWS资源;

    • 想要管理或大量自定义实例配置或部署过程;

    • 需要使用Elastic Beanstalk不支持的应用程序平台;要么

    • 只是不希望/需要任何更高级别的Elastic Beanstalk功能

    然后 use CloudFormation directly 并避免添加Elastic Beanstalk的配置层 .

  • 1

    Elastic beanstalk自动处理代码的部署 - 从容量配置,负载 balancer ,自动扩展到应用程序运行状况监控 - 基于您上传到它的代码,而cloudFormation是一个自动引擎,旨在通过JSON部署整个 Cloud 环境脚本 .

  • 0

    他们实际上是非常不同的 . Elastic Beanstalk旨在让开发人员的生活更轻松 . CloudFormation旨在使系统工程师的生活更轻松 .

    Elastic Beanstalk是AWS的IaaS服务的类似PaaS的层,它抽象出底层的EC2实例,Elastic Load Balancers,自动扩展组等 . 这使得开发人员更容易,他们不想处理所有问题 . 系统的东西,以便在AWS上快速部署他们的应用程序 . 它与Heroku,EngineYard,Google App Engine等其他PaaS产品非常相似 . 使用Elastic Beanstalk,您无需了解任何底层魔法的工作原理 .

    另一方面,CloudFormation不会自动执行任何操作 . 它只是一种在巨大的JSON文件中定义部署所需的所有资源的方法 . 因此,CloudFormation模板实际上可能会创建两个ElasticBeanstalk环境( 生产环境 和登台),一些ElasticCache集群,一个DyanmoDB表,然后在Route53中创建正确的DNS . 然后我将此模板上传到AWS,离开,45分钟后,一切准备就绪,等待 . 由于它只是一个纯文本的JSON文件,我可以将它粘贴在我的源代码控制中,这为我的应用程序部署提供了一种很好的方式 . 它还确保我有一个可重复的,“已知良好”的配置,我可以快速部署在不同的区域 .

相关问题