无法选择S3文件夹作为AWS上CodePipeline的来源

时间:2018-12-06 00:12:31

标签: amazon-web-services amazon-s3 aws-codepipeline aws-codebuild

我正在尝试使用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”文件夹中获取文件?将来还会有其他包含代码的文件夹,因此我想将所有文件夹都放在一个存储桶中。

1 个答案:

答案 0 :(得分:3)

我终于明白了。

即使您想使用S3作为源而不是工件存储,也必须压缩文件,并且必须将压缩文件指定为对象键。

因此,我在Bitbucket管道中添加了一个zip阶段,并重新配置了CodePipeline以使用压缩文件作为源。完美地工作!