AWS CodePiplene不会将文件上传到S3存储桶

如何解决AWS CodePiplene不会将文件上传到S3存储桶

我有执行以下步骤的AWS CodePipline:

enter image description here

当我手动运行CodeBuild阶段时,2个工件成功上传到s3。

enter image description here

当我更改代码并将其推送到CodeCommit时,管道成功执行,但是构件没有上载到S3存储桶。当我读取管道日志时,它断言2个文件已成功上传到S3存储桶。但是文件不在S3存储桶中。

管道和CodeBuild都使用相同的S3存储桶。这些是管道日志。日志的最后3行断言2个工件已成功上传到S#存储桶。

Container] 2020/08/24 08:25:55 Phase complete: POST_BUILD State: SUCCEEDED
[Container] 2020/08/24 08:25:55 Phase context status code:  Message: 
[Container] 2020/08/24 08:25:55 Expanding base directory path: ./build-artifacts
[Container] 2020/08/24 08:25:55 Assembling file list
[Container] 2020/08/24 08:25:55 Expanding ./build-artifacts
[Container] 2020/08/24 08:25:55 Expanding file paths for base directory ./build-artifacts
[Container] 2020/08/24 08:25:55 Assembling file list
[Container] 2020/08/24 08:25:55 Expanding **/*
[Container] 2020/08/24 08:25:55 Found 2 file(s)
[Container] 2020/08/24 08:25:56 Phase complete: UPLOAD_ARTIFACTS State: SUCCEEDED
[Container] 2020/08/24 08:25:56 Phase context status code:  Message: 

解决方法

如评论中所述,您看不到存储桶中的工件的原因是CodePipeline(CP)会将其存储在 CP的存储桶中。您可以检查CP的铲斗。

工件将被压缩,尽管存储桶中的文件没有扩展名,并且具有随机名称。您可以下载文件,添加zip扩展名并解压缩以进行验证。

部署到S3的一种方法是通过Deploy操作和Amazaon S3操作提供程序。但这只会部署zip,不会解压缩。我认为这不是您的目标。

另一种方法是在CodeBuild项目中使用 AWS CLI 将“人工”工件复制到所需的存储桶中。这可能是最简单的方法

,

CodePipeline将覆盖CodeBuild的工件存储桶,我想它会将工件移动到其自己的存储桶中。您可以通过运行以下命令来查看CodePipeline的存储桶。

codepipeline get-pipeline --name PipelineName--query pipeline.[artifactStore]

[
    {
        "type": "S3","location": "codepipeline-us-east-1-xxxxxxxx"
    }
]

如果您使用CloudFormation创建管道,则可以使用ArtifactStore配置存储桶。

更新CodePipeline中的ArtifactStore: 目前,我没有找到通过控制台更新ArtifactStore的方法,但是可以使用update-pipeline命令来完成。

获取pipleline详细信息:

aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

编辑管道以更新artifactStore中的S3存储桶,然后运行命令。

aws codepipeline update-pipeline --cli-input-json file://pipeline.json

答案参考:https://stackoverflow.com/a/49292819/11758843

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?