我正在尝试使用CodePipeline通过以下设置在AWS上设置CI / CD管道
来源:S3
构建:CodeBuild
部署:CodeDeploy
发布:EC2实例
我已经通过遵循this link
来完成配置但是我的管道失败并显示错误消息
The object with key 'code-sashi/api' does not exist.
我已经检查并确认存储桶名称正确,并且存储桶中有一个文件夹“ api”。
设置此选项的选项明确指出,我可以输入S3对象密钥或S3文件夹。在这种情况下,我想使用S3文件夹,因为我的构建工件只有在CodeBuild运行之后才能准备就绪。
但是CodePipeline继续寻找对象键,并忽略了我的文件夹。
我也尝试将S3文件夹设置为'api','/ api','api /',但它们都不起作用。我尝试将文件直接复制到存储桶中,并将文件夹设置为“ /”,但失败,并显示不同的错误消息,即“对象键不能以结尾的/结尾”
基于此link,我应该能够通过S3文件夹将存储桶的所有内容获取为'/'。
如果有帮助,我正在使用Bitbucket Pipelines将文件从Bitbucket专用存储库上传到S3。不幸的是CodePipeline无法直接连接Bitbucket,因此S3解决方法。奇怪的是,CodeBuild可以毫无问题地连接到Bitbucket存储库,但如果它是CodePipeline的一部分,它就不会这样做。
问题
如何正确配置CodePipeline,以从“ code-sashi”存储区和“ api”文件夹中获取文件?将来还会有其他包含代码的文件夹,因此我想将所有文件夹都放在一个存储桶中。
答案 0 :(得分:3)
我终于明白了。
即使您想使用S3作为源而不是工件存储,也必须压缩文件,并且必须将压缩文件指定为对象键。
因此,我在Bitbucket管道中添加了一个zip阶段,并重新配置了CodePipeline以使用压缩文件作为源。完美地工作!