我有一个与我一起运行的AWS EC2实例,并且在tomcat7上运行了一个maven项目。我尝试的是我使用Jenkins作为CI.So每当Git-hub Jenkins开始构建新的推送时,在构建完成后它会将war文件上传到AWS S3。 我遇到的问题是,我没有办法将war文件部署到AWS Ec2实例。
我曾尝试使用代码部署,在某一点上它向我展示它只支持tar,tar.gz和zip是否有任何出路将war文件从S3部署到AWS EC2实例。
谢谢。
答案 0 :(得分:4)
您可以使用Amazon Code Deploy来管理S3存储桶中的部署,并可以自动部署到文件/脚本的EC2实例。
以下是它的工作原理:
- 首先,您创建可部署的内容 - 例如网页,可执行文件 文件,设置脚本等 - 在本地开发机器上或 类似的环境,然后添加一个应用程序规范 文件(AppSpec文件)。 AppSpec文件是AWS CodeDeploy独有的;它 定义您希望AWS CodeDeploy执行的部署操作。您 将可部署内容和AppSpec文件捆绑到存档中 文件,然后将其上传到Amazon S3存储桶或GitHub 库。此归档文件称为应用程序修订版(或 只是一个修订版)。
- 接下来,您将提供AWS CodeDeploy 有关您的部署的信息,例如哪个Amazon S3存储桶或 GitHub存储库从中提取修订版本和实例集 将其内容部署到。 AWS CodeDeploy调用一组实例a 部署组。部署组包含单独标记的 实例,Auto Scaling组中的Amazon EC2实例,或两者兼而有之 每次成功上传您的新应用程序修订版 想要部署到部署组,该bundle被设置为 部署组的目标修订版。换句话说, 目前针对部署的应用程序修订版是 目标修订。这也是将要进行的修订 自动部署。
- 接下来,每个AWS CodeDeploy代理 实例轮询AWS CodeDeploy以确定拉动的内容和时间 从指定的Amazon S3存储桶或GitHub存储库进行修订。
- 最后,每个实例上的AWS CodeDeploy代理都会提取目标 从指定的Amazon S3存储桶或GitHub存储库进行修订, 使用AppSpec文件中的说明,将内容部署到 实例。
醇>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