我正在设计一个CI/CD系统,并寻求前端和后端组件之间的完全隔离。他们将使用单独的CodeCommit存储库、CodeBuild项目和部署机制。我甚至创建了单独的S3桶来存放工件。此外,我正在为管道和相关服务使用冗长的描述性名称,以确保不会出现混淆。
但是,我遇到了一个恼人的问题,CodePipeline似乎在我的工件S3桶中创建一个文件夹,该文件夹的管道名称被截断。我觉得这是不相关的,只会增加我想要避免的混乱。整个S3桶专用于那些管道工件,所以我不想要一个包含所有内容的文件夹。无论如何,我不认为可以阻止CodePipeline的这种行为。
示例:
Pipeline Name: my-clients-pipeline-for-frontend
S3 Artifacts: my-clients-pipeline-artifacts-for-frontend
----> my-clients-pipeline-f
--------> SourceArtifact
--------> BuildAritfact
Pipeline Name: my-clients-pipeline-for-backend
S3 Artifacts: my-clients-pipeline-artifacts-for-backend
----> my-clients-pipeline-f
--------> SourceArtifact
--------> BuildAritfact文件上说,
“每次使用控制台在该区域创建另一个管道时,CodePipeline都会在桶中为该管道创建一个文件夹,并在自动发布过程运行时使用该文件夹存储管道的工件。”
不过,我正在使用CloudFormation构建管道,并且不确定这是否仍然适用。管道在工作..。我能以某种方式删除这个截断的文件夹吗?
https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome-introducing-artifacts.html
发布于 2022-04-10 06:37:35
这个答复迟了19个月,所以我希望你能在这段时间内找到解决办法。^-^
当管道运行时,我通常尝试使用aws进行与AWS修改相关的任何操作。因此,例如,在您的示例中,如果您已经手动设置输出工件进入具有适当名称的桶中,例如:“my-clients管道-构件- for -backend”,那么您可以在部署阶段之后添加一个阶段,调用AWS,它使用aws删除AWS CodePipeline创建的任何文件夹:
aws s3 rm s3://my-clients-pipeline-for-backend/my-clients-pipeline-f
--recursive这个命令递归地删除文件夹中的所有内容:“My-Clients-管线-f”,然后删除文件夹本身。
我知道这不是一种非常简单的方法,但在大多数情况下,这是一种适合我的解决方案。我还没有对此进行测试以删除构建工件s3文件夹,但它仍然可以正常工作。
参考文献
在Lambda:https://bezdelev.com/hacking/aws-cli-inside-lambda-layer-aws-s3-sync/中集成AWS
在CodePipeline:https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html#actions-invoke-lambda-function-add-action中调用Lambda
https://stackoverflow.com/questions/63803979
复制相似问题