API Gateway 的阶段与运行时配置

在 AWS 上自动化部署

Dunieski Otano

Amazon Web Services Solutions Architect

三个 URL,一个 API

url

  • 同一 checkout API 需要 dev、staging、prod 环境
  • 各环境指向不同的下游资源
  • 硬编码值会迫使每个环境都重建
  • 阶段变量在运行时解决该问题
在 AWS 上自动化部署

什么是 API Gateway 阶段

api

  • 阶段是 API 的一次部署
  • 每个阶段都有自己的 URL
  • 常见阶段:dev、staging、prod
  • 一个 API 定义,多个阶段
在 AWS 上自动化部署

阶段为何有助于部署

stages

  • 在 dev 测试,不影响 prod
  • 将同一 API 逐级推广到各环境
  • 可回滚某一阶段,不影响其他
  • 各阶段维护各自的部署历史
在 AWS 上自动化部署

阶段变量

  • 针对单个阶段的键值对
  • 用 ${stageVariables.varName} 引用
  • 用于按环境配置
  • 值不同也无需改代码

variables

在 AWS 上自动化部署

阶段变量实战

  • checkout-api -> dev 阶段:lambdaAlias = dev
  • checkout-api -> prod 阶段:lambdaAlias = prod
  • 集成调用 payments:${stageVariables.lambdaAlias}
  • 一个 API 命中两个不同的 Lambda 别名

action

在 AWS 上自动化部署

自定义域名

  • 默认 URL 不友好:abc123.execute-api.us-east-1.amazonaws.com/dev
  • 自定义域名:api.example.com
    • 需要用于 TLS 的 ACM 证书
  • 基路径映射将路径绑定到阶段
    • api.example.com/v1 → prod 阶段

custom

在 AWS 上自动化部署

整体如何串联

all

  • 阶段变量 <-> 来自视频 2.3 的Lambda 别名
  • 同理适用于 ECS 任务定义版本 和 DynamoDB 表名
  • 各环境使用审核版本,无需改代码
  • 第 3 章将拓展到更多服务
在 AWS 上自动化部署

让我们一起练习吧!

在 AWS 上自动化部署

Preparing Video For Download...