首页 > 解决方案 > AWS CodeBuild 可以输出解压缩的工件吗?

问题描述

所以我有一个 CodeBuild 流程,我希望它的输出是一个嵌套的 Cloudformation 堆栈和一个可部署的压缩 Lambda,两者都被推送到一个 S3 存储桶。

我可以通过pip install awscli然后aws s3 cp #{stuff}in进行输出过程buildspec.yml,但是在阅读 CodeBuild 文档时,感觉我真的应该使用OutputArtifacts这一点。

所以..我删除了上面的awscli东西,在我的代码管道OutputArtifacts的阶段添加了一个块,然后在 .CodeBuildartifactsbuildspec.yml

一切正常,CodeBuild 将输出工件转储到 S3 .. 但问题是它们被压缩了。这不好,因为我需要另一个“主”CF 堆栈才能通过 S3 存储桶/密钥引用将生成/输出的 CF 模板作为嵌套堆栈引用。

当我查看 CodeBuild 文档时,我找不到任何关于输出解压缩工件的参考。

关于如何实现这一目标的任何想法?我应该坚持awscli吗?

标签: amazon-web-servicesaws-codebuild

解决方案


创建或更新 CodeBuild 项目时,将 ProjectArtifact 类型设置为 S3 并将打包设置为 none,如https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html#CodeBuild-Type-ProjectArtifacts-packaging中所述.

但是,仅当您将 CodeBuild 用作独立设备时,上述步骤才有效。在 CodePipeline 的上下文中使用 CodeBuild 时,您的管道将定义源和工件详细信息。在这种情况下,您最好的选择是在管道的构建步骤中使用 awscli 复制到 s3。


推荐阅读