簡體   English   中英

成功部署后從 S3 中刪除 AWS codeDeploy Revisions

[英]Delete AWS codeDeploy Revisions from S3 after successfull deployment

我正在使用 bitbucket 的 codeDeploy 插件通過 AWS codeDeploy 將我的代碼直接從 Bitbucket Git 存儲庫部署到我的 EC2 實例。 但是,過了一會兒,我的 codeDeploy 控制台中有很多修訂版,這些修訂版存儲在一個 S3 存儲桶中。 那么我應該怎么做才能避免我的 S3 存儲保留舊的 codeDeploy 修訂版?

成功部署后是否可以自動刪除這些修訂?

如果有X個成功修訂,是否可以自動刪除它們? 例如,如果我們有三個新的成功修訂,則刪除舊修訂。

CodeDeploy 保留來自 BitBucket 的每個修訂版本,因為對於 AutoRollback 等不同類型的功能,該服務始終需要最后一次成功修訂。 因此,在進行部署時,我們暫時無法輕松覆蓋先前的修訂版。 但是對於比上次成功修訂更早的所有修訂,它們可以被刪除。

不幸的是,CodeDeploy 目前沒有一種好的/優雅的方式來處理這些過時的修訂。 如果在 bitbucket 推送到 S3 時有覆蓋選項,那就太好了。

CodeDeploy 純粹是一個部署工具,它無法處理 S3 存儲桶中的修訂。

我建議您查看 S3 的“生命周期管理”。 由於您使用的是版本控制存儲桶(我假設),因此總是有一個最新版本和 0 到多個過時版本。 您可以設置“NoncurrentVersionExpiration”類型的生命周期配置,以便過時版本將在幾天后被刪除。

這種方法仍然無法維持固定數量的部署,因為 AWS 只允許以天數指定生命周期。 但這可能是您用例的最佳替代方案。

[1] http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-set-lifecycle-configuration-intro.html [2] http://docs.aws.amazon.com/AmazonS3 /latest/dev/intro-lifecycle-rules.html

我正在使用 bitbucket 的 codeDeploy 插件通過 AWS codeDeploy 將我的代碼直接從 Bitbucket Git 存儲庫部署到我的 EC2 實例。 但是,過了一會兒,我的 codeDeploy 控制台中有很多修訂版,它們存儲在一個 S3 存儲桶中。 那么我應該怎么做才能避免我的 S3 存儲保留舊的 codeDeploy 修訂版?

成功部署后是否可以自動刪除這些修訂?

如果有X個成功修訂,是否可以自動刪除它們? 例如,如果我們有三個新的成功修訂,則刪除舊修訂。

CodeDeploy 不處理像 Jenkins 示例這樣的功能:“保持最后 X [成功與否] 運行”。 但是,使用S3 Lifecycle ,您可以在 3 個月后自動使 S3 對象過期(刪除)示例。

一方面,通過確保 CodeDeploy 的自動回滾過程並降低 S3 成本,當在到期窗口(至少 3 個部署)期間存在持續活動時,此解決方案是一個很好的 FinOps 操作。

另一方面,當您在指定的 S3 到期延遲期間有尖峰活動或更糟根本沒有部署時,此解決方案效率較低:在最后一次部署后 12 個月的情況下,當此部署失敗時,Code Deploy 將不會能夠進行回滾,因為之前的工件在 S3 中不再可用。

作為緩解措施,我建議您使用智能分層,它可以在不干擾 CodeDeploy 功能的情況下分攤 S3 成本 4。 您也可以將過期時間設置為 12 個月以刪除古代文物。

另一個最后的解決方案是編寫一個由每周 Cloudwatch Events 安排的 Lambda,它將:

  • 使用您自己的標准成功/失敗狀態列出部署
  • 獲取每個部署的詳細信息
  • 使用您的標准(日期、用戶、..)再次過濾掉此部署
  • 使用部署詳細信息刪除 S3 對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM