AWS CodeDeploy 热门2014年〜
自动化向 EC2、Lambda、ECS 部署应用程序的全托管服务
它能做什么
AWS CodeDeploy 是一项自动化应用程序部署的全托管服务,支持向 EC2 实例、Lambda 函数和 ECS 服务进行部署。支持滚动部署、蓝绿部署等多种部署策略,可以在最小化停机时间的同时安全地发布新版本。部署失败时支持自动回滚。
使用场景
用于 Web 应用程序向 EC2 实例集群的滚动部署、Lambda 函数的流量切换式部署、ECS 服务的蓝绿部署等。与 CodePipeline 组合使用,可以实现从代码提交到生产部署的全自动化。
日常类比
可以将其比作连锁店的新菜单推广。不是所有门店同时更换菜单(一次性部署),而是先在几家门店试行(金丝雀部署),确认没问题后逐步推广到所有门店(滚动部署)。如果新菜单评价不好,可以立即恢复原来的菜单(回滚)。
什么是 CodeDeploy
AWS CodeDeploy 是一项自动化应用程序部署过程的服务。手动部署容易出现人为错误,且难以在多台服务器上保持一致性。CodeDeploy 按照预定义的部署配置自动执行部署,确保所有目标的一致性。
部署策略
CodeDeploy 支持多种部署策略。就地部署(In-place)在现有实例上直接更新应用程序。蓝绿部署创建新的实例集,验证后切换流量。对于 Lambda,支持线性(逐步增加流量)和金丝雀(先切换少量流量验证)部署。可以根据应用程序的特性选择最合适的策略。
自动回滚与监控
CodeDeploy 可以与 CloudWatch 告警联动,在部署过程中检测到异常时自动回滚。例如,设置“部署后错误率超过 5% 则回滚”的条件,即使无人值守也能安全部署。部署的每个步骤都有详细日志,便于故障排除。 关于自动回滚与监控的实践知识,也可以参考相关书籍(Amazon)。
AppSpec 文件与集成
AppSpec 文件(YAML 或 JSON)定义部署的具体步骤。对于 EC2 部署,可以指定文件复制目标、生命周期钩子脚本(部署前后执行的脚本)。对于 Lambda 部署,定义流量切换方式。CodeDeploy 与 CodePipeline 无缝集成,可以作为 CI/CD 流水线的部署阶段使用。
注意事项
- EC2 的就地部署期间实例会暂时从负载均衡器中移除,需要确保有足够的剩余容量
- CodeDeploy Agent 需要安装在目标 EC2 实例上,请确认 Agent 的运行状态