【问题标题】:Delete AWS codeDeploy Revisions from S3 after successfull deployment成功部署后从 S3 中删除 AWS codeDeploy 修订
【发布时间】:2017-01-14 17:28:48
【问题描述】:

我正在使用 bitbucket 的 codeDeploy 插件通过 AWS codeDeploy 将我的代码直接从 Bitbucket Git 存储库部署到我的 EC2 实例。但是,过了一段时间,我的 codeDeploy 控制台中有很多修订,它们存储在一个 S3 存储桶中。那么我应该怎么做才能使我的 S3 存储免于保留旧的 codeDeploy 修订?

成功部署后是否可以自动删除这些修订?

如果有X个成功的修订,是否可以自动删除它们?例如,如果我们有三个新的成功修订,则删除旧修订。

【问题讨论】:

    标签: amazon-web-services amazon-s3 bitbucket continuous-deployment aws-code-deploy


    【解决方案1】:

    CodeDeploy 保留来自 BitBucket 的每个修订版,因为该服务始终需要最后一次成功的修订版以用于不同类型的功能,例如 AutoRollback。因此,在进行部署时,我们现在不能轻易地覆盖以前的修订版。但是对于比上次成功修订更早的所有修订,它们可以被删除。

    【讨论】:

      【解决方案2】:

      不幸的是,CodeDeploy 目前没有很好/优雅的方式来处理那些过时的修订。如果在 bitbucket 推送到 S3 时有覆盖选项,那就太好了。

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

        • 根据我的经验,CodeDeploy 为每个修订提供不同的对象名称,因此版本控制无济于事。
        【解决方案4】:

        CodeDeploy 不处理像 Jenkins 示例这样的功能:“保持最后 X [成功与否] 运行”。 但是,使用S3 Lifecycle,您可以在样本 3 个月后自动过期(删除)S3 对象。

        一方面,通过确保 CodeDeploy 的自动回滚过程并降低 S3 成本,当在到期窗口(至少 3 次部署)期间存在持续活动时,此解决方案是一个不错的 FinOps 操作。

        另一方面,当您在指定的 S3 过期延迟期间有大量活动或更糟糕的是根本没有部署时,此解决方案的效率较低:如果在最后一次部署后 12 个月进行部署,则当此部署失败时,代码部署将无法继续回滚,因为之前的工件在 S3 中不再可用。

        作为缓解措施,我建议您使用Intelligent Tiering,它可以将 S3 成本分成 4,而不会干扰 CodeDeploy 功能。您也可以将过期时间设置为 12 个月以删除古代文物。

        另一个最后的解决方案是编写由每周 Cloudwatch Events 安排的 Lambda,这将:

        • List deplyments 使用您自己的标准成功/失败状态
        • Get deployment details 每个
        • 使用您的条件(日期、用户、..)再次过滤掉此部署
        • 使用部署详细信息删除 S3 对象

        【讨论】:

          猜你喜欢
          • 2015-12-12
          • 1970-01-01
          • 2017-12-17
          • 2017-03-16
          • 1970-01-01
          • 2017-05-29
          • 1970-01-01
          • 2019-11-21
          • 2018-04-27
          相关资源
          最近更新 更多