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

Maven 如何将WAR文件从s3部署到AWS EC2?,maven,amazon-web-services,jenkins,amazon-s3,amazon-ec2,Maven,Amazon Web Services,Jenkins,Amazon S3,Amazon Ec2,我有一个AWSEC2实例在运行,还有一个maven项目在tomcat7上运行。我尝试的是使用Jenkins进行CI。因此,每当Git hub上出现新的推送时,Jenkins就会开始构建,构建完成后,它会将war文件上传到AWS S3。 我遇到的问题是,我没有办法将war文件部署到AWS Ec2实例 我曾尝试使用代码部署,在某种程度上,它向我展示了它只支持tar、tar.gz和zip,并且没有办法从S3将war文件部署到AWS EC2实例 谢谢。假设您已经创建了一个S3存储桶 步骤1:创建一个IA

我有一个AWSEC2实例在运行,还有一个maven项目在tomcat7上运行。我尝试的是使用Jenkins进行CI。因此,每当Git hub上出现新的推送时,Jenkins就会开始构建,构建完成后,它会将war文件上传到AWS S3。 我遇到的问题是,我没有办法将war文件部署到AWS Ec2实例

我曾尝试使用代码部署,在某种程度上,它向我展示了它只支持tar、tar.gz和zip,并且没有办法从S3将war文件部署到AWS EC2实例


谢谢。

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

步骤1:创建一个IAM用户/角色,该用户/角色可以访问s3存储桶,您将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
您可以使用它来管理S3 bucket中的部署,并自动部署到文件/脚本的EC2实例

下面是它的工作原理:

首先,您创建可部署的内容,例如网页、可执行文件 文件、设置脚本等–在本地开发计算机或 类似的环境,然后添加应用程序规范 文件AppSpec文件。AppSpec文件对于AWS CodeDeploy是唯一的;信息技术 定义希望AWS CodeDeploy执行的部署操作。你 将可部署内容和AppSpec文件捆绑到存档中 文件,然后将其上载到AmazonS3 bucket或GitHub 存储库。此存档文件称为应用程序修订版或 只是一个修订。 接下来,提供AWS CodeDeploy和 有关部署的信息,例如哪个Amazon S3存储桶或 要从中提取修订的GitHub存储库以及哪一组实例 将其内容部署到。AWS CodeDeploy将一组实例调用为 部署组。部署组包含单独标记的 实例、自动缩放组中的Amazon EC2实例或两者。 每次成功上载新的应用程序修订版时 要部署到部署组,该捆绑包被设置为 部署组的目标修订。换句话说 当前部署的目标应用程序修订版是 目标修订。这也是将要进行的修订 自动部署。 接下来,AWS CodeDeploy代理在每个 实例轮询AWS CodeDeploy以确定拉取的内容和时间 来自指定Amazon S3 bucket或GitHub存储库的修订。 最后,每个实例上的AWS CodeDeploy代理提取目标 来自指定Amazon S3 bucket或GitHub存储库的修订,以及, 使用AppSpec文件中的说明,将内容部署到 实例。 AWS CodeDeploy会记录您的部署,以便 您可以获取诸如部署状态、部署 配置参数、实例运行状况等


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

在aws EC2实例上运行脚本以从S3中提取war怎么样?我需要自动完成。比如当jenkins上传一个war文件时,例如code deploy获取它并将其部署到ec2实例Hanks@vikash,但我需要自动化,当文件上传到s3时,它应该部署到ec2实例。为此,您需要使用一些CI/CD工具。。你可以和我一起去Jenkins@BhavikJoshi:创建一个服务,它会触发s3上的更改。嘿@Frédéric感谢您分享您的知识。我被WAR文件绊倒了jenkins正在上传一个WAR文件,代码部署不支持WAR文件部署,还有其他办法吗?还有一个问题,我们应该把我们的APpspec.yml文件放在哪里?嘿@BhavikJoshi,你可以压缩你的war,告诉我你什么时候运行aws部署-s3 location bucket=,key=,bundleType=zip appspec.yml文件将放在您的EC2实例上,您将从中调用aws部署