[英]How to deploy a WAR file from s3 to AWS EC2?
我有一個運行中的AWS EC2實例,並且在tomcat7上運行了一個maven項目。 我嘗試使用的是Jenkins作為CI,因此只要Git-hub Jenkins出現新的推送,構建完成后,它將戰爭文件上傳到AWS S3。 卡住的地方是,我沒有辦法將war文件部署到AWS Ec2實例。
我嘗試過使用Code Deployment,它在某種程度上表明它僅支持tar,tar.gz和zip,可以通過任何方式將war文件從S3部署到AWS EC2實例。
謝謝。
您可以使用Amazon Code Deploy ,它可以管理S3存儲桶中的部署,並可以自動部署到文件/腳本的EC2實例。
從部署概述
運作方式如下:
- 首先,您在本地開發計算機或類似環境上創建可部署的內容(例如網頁,可執行文件,安裝腳本等),然后添加應用程序規范文件(AppSpec文件)。 AppSpec文件對於AWS CodeDeploy是唯一的; 它定義了您希望AWS CodeDeploy執行的部署操作。 您將可部署的內容和AppSpec文件捆綁到一個存檔文件中,然后將其上傳到Amazon S3存儲桶或GitHub存儲庫。 此存檔文件稱為應用程序修訂版(或簡稱為修訂版)。
- 接下來,您向AWS CodeDeploy提供有關您的部署的信息,例如從哪個Amazon S3存儲桶或GitHub存儲庫中提取修訂,以及將其內容部署到哪個實例集。 AWS CodeDeploy將一組實例稱為部署組。 部署組包含單獨標記的實例,Auto Scaling組中的Amazon EC2實例或兩者。
每次成功將要部署的新應用程序修訂上載到部署組時,該捆綁包都將設置為部署組的目標修訂。 換句話說,當前以部署為目標的應用程序修訂版是目標修訂版。 這也是將為自動部署拉出的修訂。- 接下來,每個實例上的AWS CodeDeploy代理都會輪詢AWS CodeDeploy,以確定從指定的Amazon S3存儲桶或GitHub存儲庫中提取修訂的內容和時間。
- 最后,每個實例上的AWS CodeDeploy代理從指定的Amazon S3存儲桶或GitHub存儲庫中提取目標修訂,然后使用AppSpec文件中的說明將內容部署到該實例。
AWS CodeDeploy會記錄您的部署,以便您獲取諸如部署狀態,部署配置參數,實例運行狀況等信息。
好消息是代碼部署沒有額外的成本,您只需為管道中使用的資源(EC2,S3)付費
假設您已經創建了一個S3存儲桶。
步驟1:創建一個有權訪問s3存儲桶的IAM用戶/角色,在其中放置WAR文件
步驟2:編寫一個自定義腳本,該腳本將從S3下載WAR文件到您的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.