簡體   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