CodeDeploy到S3

Jor*_*jon 8 amazon-s3 amazon-web-services aws-codecommit aws-codepipeline aws-codebuild

我在S3存储桶中有一个站点,配置为Web访问,aws s3 sync每次我推送一个特定的git存储库时我都会运行一个命令(我现在正在使用Gitlab).

因此,如果我推送到stable分支,Gitlab运行器将执行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功能的当前状态是否可以实现?

Joe*_*sca 7

今天,AWS已宣布在CodePipeline的部署阶段以新功能为目标S3.公告在这里,文档包含这里提供的教程.

使用CodeBuild/CodePipeline方法,您现在应该能够在部署阶段选择S3作为部署提供程序,而不是在构建脚本中执行同步.要配置阶段,请提供S3存储桶名称,指定是否提取工件zip的内容,如果是,则提供可选的提取路径.这应该允许您通过省略路径将内容直接部署到存储桶的根目录.

  • 太好了!文档链接是https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-s3deploy.html (2认同)

Mat*_*tko 6

我正在处理类似的问题,据我所知,没有适合将应用程序部署到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