5

我有2台AWS机器,1.dev (ec2) 2. prod (elastic beanstalk)。每构建一个war文件(也将使用s3cmd工具上载到S3存储桶)后,我会在dev(machine1)上构建和部署。然后我测试开发机器上新部署的战争,如果它看起来不错,那么我从dev(ec2)下载战争,然后将其上传到prod机器(Elastic beanstalk)。将战争从S3部署到AWS Elastic Beanstalk

有没有办法让弹性beanstalk直接从S3桶取得战争,而不是从ec2下载它,然后将其上传到弹性beanstalk?

我试着创建新的环境,然后给应用程序版本的s3桶路径,但它没有工作。 (给出了一些错误,说“这只能在VPC中完成”)。

回答

15

我已经得到了最好的答案this post

它需要使用AWS CLI 3个简单步骤:

  1. 上传到S3斗:AWS S3 CP在/ var/lib中/ tomcat7/webapps中/ROOT.war S3:// elasticbeanstalk-AP-东南-1- XXXXXX/myROOT.war
  2. 创建应用程序版本:AWS elasticbeanstalk CRE吃的应用程序的版本 --application名your_app_name --version标签your_version_label --source束S3Bucket = elasticbeanstalk-AP-东南-1- XXXXXX,S3Key = myROOT.war
  3. 更新你的环境:AWS elasticbeanstalk更新环境 --environment名your_app_name --version标签your_version_label

我已经创建了一个​​,所有上述步骤仅需3秒。请仔细阅读链接以获取更多描述性答案。

+0

在AWS docco http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deployment.html – 2015-10-29 10:13:12

2

如果您的s3 war文件位于mybucket/test/myapp.war中,那么使用s3存储区创建一个应用程序版本为mybuckettest/myapp.war即可。不知道你为什么得到VPC相关的错误。你何时何地发现错误?当您创建应用程序版本或创建环境时? API调用是否立即在事件中看到错误消息?

+0

谢谢,但是我想部署的战争路径是'https:// s3-us-west-2.amazonaws.com/mybucket/ROOT.war',但是当我以S3- URL,它不接受它,我也尝试过使用“https:// s3.amazonaws.com/mybucket/ROOT.war”和“https:// mybucket.s3.amazonaws.com/ROOT.war”,但没有运气。我究竟做错了什么? – thekosmix 2014-09-07 07:39:58

+0

这很好......在S3Bucket上面的s3 url中是“mybucket”,而对象键是“ROOT.war”。如果您在us-west-2中启动弹性beanstalk环境,请确保'mybucket'也在区域'us-west-2'中创建。 – 2014-09-07 07:42:40

+0

thnx,我能够部署它,但最后一件事,我如何部署ROOT.war的下一个版本?以上步骤是第一次完成,我怎样才能部署下一个版本? – thekosmix 2014-09-07 18:47:57

相关问题