无法 select S3 文件夹作为 AWS 上 CodePipeline 的源

Unable to select S3 folder as the source for CodePipeline on AWS

我正在尝试使用 CodePipeline 和以下设置在 AWS 上设置 CI/CD 管道

来源:S3

构建:代码构建

部署:CodeDeploy

发布:EC2 实例

我按照this link

完成了配置

但是我的管道失败并显示错误消息

The object with key 'code-sashi/api' does not exist.

我已经检查并确认存储桶名称是正确的,并且存储桶中有一个文件夹'api'。

设置此项的选项明确指出我可以输入 S3 对象密钥或 S3 文件夹。在这种情况下,我想使用 S3 文件夹,因为我的构建工件只会在 CodeBuild 运行后准备就绪。

但是 CodePipeline 继续寻找对象键并忽略我的文件夹。

我也试过将 S3 文件夹设置为 'api'、'/api'、'api/' 和 none。我尝试将我的文件直接复制到存储桶并将文件夹设置为“/”,但失败并显示 "object key cannot end with a trailing /"

的不同错误消息

基于此link我应该能够通过 S3 文件夹获取存储桶中的所有内容作为“/”。

如果有帮助,我正在使用 Bitbucket Pipelines 将文件从 Bitbucket 私有存储库上传到 S3。不幸的是,CodePipeline 无法直接连接 Bitbucket,因此无法使用 S3 解决方法。奇怪的是,CodeBuild 连接到 Bitbucket 存储库没有问题,但如果它是 CodePipeline 的一部分,它就不能这样做。

问题

如何正确配置 CodePipeline 以从 'code-sashi' 存储桶和 'api' 文件夹中获取我的文件?将来会有其他包含代码的文件夹,所以我想将它们全部放在一个桶中。

我终于想通了。

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

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