簡體   English   中英

CodeDeploy到S3

[英]CodeDeploy to S3

我在S3存儲桶中有一個站點,配置為Web訪問,每次我推送一個特定的git存儲庫時,我都會運行一個aws s3 sync命令(我現在正在使用Gitlab)。

因此,如果我推送到stable分支,Gitlab npm start build會執行npm start build命令來構建站點,然后執行aws s3 sync以同步到特定存儲桶。

我想遷移到CodeCommit並使用純AWS工具來做同樣的事情。


到目前為止,我能夠成功設置存儲庫,創建用於構建工件的CodeBuild ,並將工件存儲 (未部署)到S3存儲桶。 區別在於我無法將其部署到存儲桶的根文件夾而不是子文件夾,似乎沒有為此進行過程。 我需要它在根文件夾上,因為如何配置Web訪問。

對於部署過程,我正在查看CodeDeploy,但它實際上並沒有讓我部署到S3存儲桶,它只使用存儲區作為部署到EC2實例的中介。 到目前為止,我感覺CodeDeploy僅對涉及EC2的部署有用。

本教程的要求與我的相似,使用CodePipelineCodeBuild ,但部署步驟實際上是一個aws s3 sync命令(與我在Gitlab上做的相同),並禁用了CodePipeline上的實際部署步驟。

我正在尋找一個解決方案,其中涉及使用為此特定目的而制作的AWS功能,但我找不到任何解決方案。

我也知道LambCI ,但對我來說看起來像CodePipeline / CodeBuild正在做什么,存儲工件(不部署到存儲桶的根文件夾)。 另外,我正在尋找一個不需要我學習或部署新配置文件的選項(在AWS配置文件之外)。

AWS功能的當前狀態是否可以實現?

今天,AWS已宣布在CodePipeline的部署階段以新功能為目標S3。 公告在這里 ,文檔包含這里提供的教程。

使用CodeBuild / CodePipeline方法,您現在應該能夠在部署階段選擇S3作為部署提供程序,而不是在構建腳本中執行同步。 要配置階段,請提供S3存儲桶名稱,指定是否提取工件zip的內容,如果是,則提供可選的提取路徑。 這應該允許您通過省略路徑將內容直接部署到存儲桶的根目錄。

我正在處理類似的問題,據我所知,沒有適合將應用程序部署到S3的服務。

AWS CodeDeploy確實用於部署作為服務器運行的代碼。

我的解決方案是使用CodePipeline有三個階段:

  1. 源自AWS CodeCommit的源代碼
  2. 使用AWS CodeBuild構建
  3. 自定義lambda函數,在成功構建后從S3工件存儲獲取工件,解壓縮並將文件復制到我的S3網站主機。

在此輸入圖像描述

我在SeamusJ中使用了這個AWS lambda函數https://github.com/SeamusJ/deploy-build-to-s3

必須進行一些更改,我使用node-unzip-2而不是unzip-stream來解壓縮來自s3的artifict。

我還必須在website.ts文件中更改ACL

從CodeBuild上傳是目前最好的解決方案。

關於如何在此答案中通過CodePipeline協調此部署,有一些建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM