将战争从S3部署到AWS Elastic Beanstalk

时间:2014-09-05 10:18:48

标签: amazon-web-services amazon-ec2 amazon-s3 elastic-beanstalk

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

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

我尝试创建新环境,然后为应用程序版本提供了s3存储桶路径,但它无法正常工作。 (给出了一些错误,说“这只能在VPC中完成”)。

2 个答案:

答案 0 :(得分:20)

我在this post得到了最好的答案:

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

  1. 上传到S3存储桶: aws s3 cp /var/lib/tomcat7/webapps/ROOT.war s3:// elasticbeanstalk-ap-southeast-1- xxxxxx /myROOT.war
  2. 创建应用程序版本: aws elasticbeanstalk create-application-version --application-name your_app_name --version-label your_version_label --source -bundle S3Bucket = elasticbeanstalk-ap-southeast-1- xxxxxx ,S3Key = myROOT.war
  3. 更新您的环境: aws elasticbeanstalk update-environment --environment-name your_environment_name --version-label your_version_label
  4. 我创建了一个bash script,上述所有步骤只需3秒钟。请仔细阅读链接以获得更具描述性的答案。

答案 1 :(得分:2)

如果您的s3 war文件位于mybucket / test / myapp.war中,那么使用s3存储桶创建一个应用程序版本为mybuckettest/myapp.war就可以了。不确定为什么会收到与VPC相关的错误。您何时何地看到该错误?创建应用程序版本或创建环境时? API调用是否会立即抛出错误消息,您是否会在以后的事件中看到它?