管理环境与批准版本

在 AWS 上自动化部署

Dunieski Otano

Amazon Web Services Solutions Architect

同一代码,三套环境

相同代码

  • 将 Lambda 版本从 staging 提升到 prod
  • 相同制品,无需重建
  • 一次 API 调用更新 prod 别名;代码不变
  • 这就是 "build once, deploy many"
在 AWS 上自动化部署

各服务的批准版本

版本

  • Lambda:别名指向函数版本
  • ECR + ECS:镜像标签与任务定义修订版
  • API Gateway:带部署的阶段
  • S3:启用版本控制桶中的对象版本
在 AWS 上自动化部署

Lambda 别名如何工作

3 个版本

  • 版本是函数的不可变快照
  • 别名是指向版本的命名指针
  • 通过更新别名来提升某个版本
  • 别名支持金丝雀发布的加权路由
在 AWS 上自动化部署

ECR 标签与 ECS 任务定义

  • ECR 镜像按摘要不可变
  • 标签是摘要上的可移动标记
  • ECS 任务定义引用 image:tag 或 @digest
  • 生产环境请按摘要固定以锁定精确位级内容

ecr

在 AWS 上自动化部署

API Gateway 阶段速览

  • 阶段是API 的一次部署
  • 每个阶段有自己的 URL 和部署历史
  • 通过部署 API到下一阶段来提升
  • 阶段变量保存按环境的运行时值

api-2

在 AWS 上自动化部署

版本提升

  • 制品仅构建一次
  • 在 dev 验证,再到 staging
  • 更新 prod 别名或标签,无需重建
  • 同一制品运行于所有环境

提升

在 AWS 上自动化部署

配置与代码分离

分离

  • 各环境间代码保持不变
  • 配置承载 dev 与 prod 的差异
  • 阶段变量、环境变量、Parameter Store、Secrets Manager
  • 切勿在制品中硬编码环境值
在 AWS 上自动化部署

让我们一起练习吧!

在 AWS 上自动化部署

Preparing Video For Download...