繁体   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