如何将WAR文件从s3部署到AWS EC2?

时间:2016-01-14 09:45:53

标签: maven amazon-web-services jenkins amazon-s3 amazon-ec2

我有一个与我一起运行的AWS EC2实例,并且在tomcat7上运行了一个maven项目。我尝试的是我使用Jenkins作为CI.So每当Git-hub Jenkins开始构建新的推送时,在构建完成后它会将war文件上传到AWS S3。 我遇到的问题是,我没有办法将war文件部署到AWS Ec2实例。

我曾尝试使用代码部署,在某一点上它向我展示它只支持tar,tar.gz和zip是否有任何出路将war文件从S3部署到AWS EC2实例。

谢谢。

2 个答案:

答案 0 :(得分:4)

您可以使用Amazon Code Deploy来管理S3存储桶中的部署,并可以自动部署到文件/脚本的EC2实例。

来自Overview of a Deployment

  

以下是它的工作原理:

     
      
  1. 首先,您创建可部署的内容 - 例如网页,可执行文件   文件,设置脚本等 - 在本地开发机器上或   类似的环境,然后添加一个应用程序规范   文件(AppSpec文件)。 AppSpec文件是AWS CodeDeploy独有的;它   定义您希望AWS CodeDeploy执行的部署操作。您   将可部署内容和AppSpec文件捆绑到存档中   文件,然后将其上传到Amazon S3存储桶或GitHub   库。此归档文件称为应用程序修订版(或   只是一个修订版)。
  2.   
  3. 接下来,您将提供AWS CodeDeploy   有关您的部署的信息,例如哪个Amazon S3存储桶或   GitHub存储库从中提取修订版本和实例集   将其内容部署到。 AWS CodeDeploy调用一组实例a   部署组。部署组包含单独标记的   实例,Auto Scaling组中的Amazon EC2实例,或两者兼而有之   每次成功上传您的新应用程序修订版   想要部署到部署组,该bundle被设置为   部署组的目标修订版。换句话说,   目前针对部署的应用程序修订版是   目标修订。这也是将要进行的修订   自动部署。
  4.   
  5. 接下来,每个AWS CodeDeploy代理   实例轮询AWS CodeDeploy以确定拉动的内容和时间   从指定的Amazon S3存储桶或GitHub存储库进行修订。
  6.   
  7. 最后,每个实例上的AWS CodeDeploy代理都会提取目标   从指定的Amazon S3存储桶或GitHub存储库进行修订,   使用AppSpec文件中的说明,将内容部署到   实例。
  8.         

    AWS CodeDeploy会保留部署记录   您可以获取部署状态,部署等信息   配置参数,实例运行状况等。

很好的部分是代码部署没有额外的成本,您只需支付管道中使用的资源(EC2,S3)

答案 1 :(得分:0)

假设您已经创建了一个S3存储桶。

步骤1:创建一个有权访问s3存储桶的IAM用户/角色,其中包含WAR文件

第2步:编写一个自定义脚本,将WAR文件从S3下载到您的EC2实例。

您还可以使用aws cli将内容从s3下载到本地计算机。

创建 startup.sh 文件并添加这些内容

aws s3 cp s3://com.yoursitename/warFile/sample.war /tmp
sudo mv /tmp/sample.war /var/lib/tomcat/webapps/ROOT.war
sudo service tomcat restart