1

我有一个S3桶站点,配置为Web访问,为此,我运行一个aws s3 sync命令每次我按下了一个特定的Git仓库(我使用Gitlab的时刻)的时间。CodeDeploy到S3

因此,如果我推送到stable分支,Gitlab亚军执行npm start build命令建立网站,然后aws s3 sync同步到一个特定的存储桶。

我想迁移到CodeCommit并使用纯AWS工具来做同样的事情。


到目前为止,我是能够成功地建立了资料库,创建一个CodeBuild建设的神器,而神器是存储(未部署的)的S3桶。不同之处在于,我无法将其部署到存储桶的根文件夹而不是子文件夹,似乎并不是为此而创建的。我需要它在根文件夹上,因为如何配置Web访问。

对于部署过程,我查看了CodeDeploy,但它实际上并没有让我部署到S3存储桶,它只使用存储桶作为部署到EC2实例的中介。到目前为止,我感觉CodeDeploy仅适用于涉及EC2的部署。

This tutorial与比我类似的要求,采用CodePipelineCodeBuild,但部署的步骤实际上是一个aws s3 sync命令(相同的,因为我是做对Gitlab),并在CodePipeline实际部署的步骤是禁用。

我正在研究一个解决方案,其中涉及使用针对此特定目的的AWS功能,但找不到任何解决方案。

我也清楚的LambCI,但对我来说看起来像什么CodePipeline/CodeBuild是干什么的,保存文物(不部署到桶的根文件夹)。另外,我正在寻找一个不需要我学习或部署新配置文件(AWS配置文件外部)的选项。

AWS功能的当前状态可能吗?

回答

0

从CodeBuild上传是目前最好的解决方案。

有一个关于如何在this answer编排通过CodePipeline此部署的一些建议。

1

我正在处理类似的问题,并且据我所知,没有适合将应用程序部署到S3的服务。

AWS CodeDeploy确实用于部署作为服务器运行的代码。

我的解决办法是使用CodePipeline有三个阶段:

  1. 来源,采用源代码AWS CodeCommit
  2. 与AWS CodeBuild构建
  3. 自定义拉姆达功能,成功构建后需要神器从S3神器存储,解压缩并将文件复制到我的S3网站主机。

enter image description here

我用这个AWS lambda函数从SeamusJ https://github.com/SeamusJ/deploy-build-to-s3

若干变化必须作出,我使用的节点-解压-2而不是解压缩流从S3 unziping artifict。

此外,我不得不改变ACLs在website.ts文件