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

ksp*_*rin 105 amazon-web-services aws-cloudformation amazon-elastic-beanstalk

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

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

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

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

jam*_*ieb 186

他们实际上是非常不同的.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文件,我可以将它粘贴在我的源代码控制中,这为我的应用程序部署提供了一种很好的方式.它还确保我有一个可重复的,"已知良好"的配置,我可以快速部署在不同的区域.

  • @xxkylexx仅供参考:"EBS"是指名为"Elastic Block Store"的AWS服务.我想你的意思是说"Elastic Beanstalk"而不是"EBS". (29认同)
  • 我认为他们使用并自动化了 Cloud Formation 模板来为您创建的应用程序创建 Elastic Beanstalk 环境 - .Net 或其他任何...... FWIW (2认同)

wjo*_*dan 40

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

应用服务比较图形

AWS CloudFormation:"模板驱动的供应"

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

CloudFormation(CFn)是对现有AWS API的轻量级低级抽象.使用静态JSON/YAML 模板文档,您可以声明与AWS API上的CRUD操作相对应的一组资源(例如EC2实例S3存储桶).

创建CloudFormation堆栈时,CloudFormation会调用相应的API来创建关联的资源,当您删除堆栈时,CloudFormation会调用相应的API来删除它们.支持大多数(但不是全部)AWS API.

AWS Elastic Beanstalk:"轻松实现Web应用程序"

AWS Elastic Beanstalk是一种易于使用的服务,用于在熟悉的服务器(如Apache,Nginx,Passenger)上部署和扩展使用Java,.NET,PHP,Node.js,Python,Ruby,GoDocker开发的Web应用程序和服务.和IIS.

您只需上传代码,Elastic Beanstalk就可以自动处理部署,从容量配置,负载平衡,自动扩展到应用程序运行状况监控.

Elastic Beanstalk(EB)是用于托管Web应用程序的更高级别的托管"平台即服务"(PaaS),其范围与Heroku类似.EB不是直接处理低级AWS资源,而是提供一个完全托管的平台,您可以使用Web界面创建应用程序环境,选择应用程序使用的平台,创建和上载源包,EB处理其余平台.

使用EB,您可以获得各种内置功能,用于监控应用程序环境部署应用程序的新版本.

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

结论

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

如果你:

  • 希望直接管理所有应用程序的AWS资源;
  • 想要管理或大量定制实例配置或部署过程;
  • 需要使用Elastic Beanstalk不支持的应用程序平台; 要么
  • 只是不希望/需要任何更高级别的Elastic Beanstalk功能

然后直接使用CloudFormation并避免添加Elastic Beanstalk的配置层.


小智 13

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脚本的方式等.


Mat*_*att 10

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