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

Sas*_*shi 7 amazon-s3 amazon-web-services aws-codepipeline aws-codebuild

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

资料来源:S3

构建:代码构建

部署:CodeDeploy

发布:EC2 实例

我已经按照这个链接完成了配置

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

The object with key 'code-sashi/api' does not exist.
Run Code Online (Sandbox Code Playgroud)

我已经检查并确认存储桶名称正确,并且存储桶内有一个文件夹“api”。

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

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

我还尝试将 S3 文件夹设置为“api”、“/api”、“api/”,但它们都不起作用。我尝试将我的文件直接复制到存储桶并将文件夹设置为“/”,但失败并显示“对象键不能以尾随 / 结尾”的不同错误消息

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

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

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

Sas*_*shi 7

我终于明白了这一点。

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

所以我在我的 Bitbucket Pipeline 中添加了一个 zip stage 并重新配置 CodePipeline 以使用压缩文件作为源。完美地工作!