繁体   English   中英

如何使用带有动态 s3 object 密钥的 s3 触发代码管道?

[英]How to Trigger codepipeline with s3 with dynamic s3 object key?

我有一个桶,其对象的名称为 commitId。 我想将这些 commitID 传递到我的代码管道并将这些 id 用于松弛消息。

我试图在将 zip 文件上传到 s3 时触发 Codepipeline,但是正如我在文档中看到的那样,它只能使用 static 存储桶密钥触发。 我想用任何文件名触发

https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-S3.html我正在处理一个用例,其中 s3 中上传的 object 将具有动态 object 密钥。

如何处理这种情况?

我已经阅读了这个问题,所以我知道将 s3 与 lambda 一起使用,然后使用 lambda 触发管道,但这仍然不起作用,因为我需要将 zip 文件传递给 codebuild

TL;DR 让 Lambda 在commit_id.txt中记录 ID 并将其添加到包中。


我知道你想在任意 object 时执行管道,比如a5bf8c1.zip添加到 S3 路径,比如MyPipelineBucket/commits/ 管道有一个 S3 源,比如MyPipelineBucket/source.zip 您的管道执行还需要文件名值 ( a5bf8c1 )。

  1. 在存储桶上设置 S3 事件通知。 MyPipelineBucket/commits/前缀上应用object 键名过滤
  2. 将 Lambda Function 设置为目的地
  3. Lambda 接收事件通知负载中的 Commit ID 作为触发文件名。 将其写入commit_id.txt文件。 使用 SDK,从 S3 获取MyPipelineBucket/commits/a5bf8c1.zip包。 commit_id.txt添加到包中。 将新包放入MyPipelineBucket/source.zip 这将触发执行。
  4. 在您的管道中,您的 CodeBuild 命令现在可以访问 Commit ID。 例如,您可以将 Commit ID 设置为环境变量:
COMMIT_ID=$(cat commit_id.txt)
echo COMMIT_ID # -> a5bf8c1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM