所以我有一个 CodeBuild 过程,我希望它的输出是一个嵌套的 Cloudformation 堆栈和一个压缩的 Lambda 可部署文件,两者都被推送到一个 S3 存储桶。
我可以通过 pip install awscli
执行输出过程,然后在 buildspec.yml
中执行 aws s3 cp #{stuff}
,但是阅读 CodeBuild 文档,感觉我真的应该为此使用 OutputArtifacts
。
所以 .. 我删除了上面的 awscli
东西,将一个 OutputArtifacts
block 添加到我的代码管道的 CodeBuild
阶段,并添加一个artifacts
block 到 buildspec.yml
。
一切正常,CodeBuild 将输出工件转储到 S3 ..但问题是它们被压缩了。这不好,因为我需要另一个“主”CF 堆栈才能通过 S3 存储桶/ key 引用将生成/输出的 CF 模板引用为嵌套堆栈。
当我查看 CodeBuild 文档时,我找不到任何关于输出解压缩工件的引用。
关于如何实现这一点有什么想法吗?我应该坚持使用 awscli
吗?
最佳答案
创建或更新 CodeBuild 项目时,将 ProjectArtifact 类型设置为 S3 并将打包设置为无,如 https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html#CodeBuild-Type-ProjectArtifacts-packaging 中所述.
但是,上述步骤仅在您将 CodeBuild 用作独立版本时才有效。在 CodePipeline 的上下文中使用 CodeBuild 时,您的管道定义源和工件详细信息。在这种情况下,您最好的选择是在管道的构建步骤中使用 awscli 复制到 s3。
关于amazon-web-services - AWS CodeBuild 可以输出解压缩的工件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336854/