API 开发

在 AWS 上开发应用

Ricardo Sueiras

Principal Technologist

API Gateway 集成

 

API Gateway 集成

  • 多种后端集成选项
  • HTTP:任何可公开路由的端点
  • AWS 服务 API,如 DynamoDB 或 SNS
  • Lambda 函数
  • 通过 VPC 链接访问私有资源
  • 无真实后端的 Mock 响应
在 AWS 上开发应用

集成类型:代理

 

API 集成类型

  • 集成类型决定 API Gateway 的控制程度
  • 代理类型:AWS_PROXYHTTP_PROXY
  • 将整个 HTTP 请求直传后端
  • API Gateway 透明透传
  • 响应由后端生成
在 AWS 上开发应用

集成类型:非代理

  • 非代理类型:AWSHTTP
  • 您可配置请求与响应转换
  • 由映射模板驱动
  • 模板使用 Velocity Template Language(VTL)编写

 

API 集成类型

在 AWS 上开发应用

请求验证

 

请求验证

  • 在到达后端前验证请求
  • 捕获缺失的必填字段
  • 捕获无效的 JSON 格式
  • 捕获错误的参数类型
  • 失败通常返回 400 Bad Request
在 AWS 上开发应用

请求验证

 

请求验证

  • 验证可覆盖:
    • 头部
    • 查询字符串参数
    • 请求正文
    • JSON 架构
在 AWS 上开发应用

请求验证

 

请求验证

  • 验证的收益:
    • 减少无效后端请求
    • 降低 Lambda 执行成本
    • 提升 API 可靠性
在 AWS 上开发应用

转换

  • 在不改后端代码的情况下重塑请求与响应
    • 更改负载结构
    • 重命名字段
    • 转换头部
    • 转换数据格式
    • 隐藏实现细节
  • 由 VTL 映射模板提供支持

 

API 转换

在 AWS 上开发应用

错误处理

 

API 错误

  • 两类错误
    • 网关错误:由 API Gateway 抛出
    • 集成错误:后端失败
  • 常见网关错误:
    • 400 Bad Request:请求验证失败
    • 429 Too Many Requests:超出限流阈值
在 AWS 上开发应用

错误处理

 

API 错误

  • 常见集成错误:
    • 502 Bad Gateway:响应畸形或无效
    • 503 Service Unavailable:后端不可用或过载
    • 504 Gateway Timeout:超出 29 秒超时
    • 区域型与私有 REST API 可超过 29 秒
在 AWS 上开发应用

日志记录

  • 执行日志与 CloudWatch 指标是关键排障工具
  • API Gateway 与 CloudWatch 集成以提供:
    • 日志
    • 指标
    • 执行追踪

 

 

API 可观测性

在 AWS 上开发应用

日志记录

  • CloudWatch 日志助您排查:
    • 集成失败
    • 转换错误
    • 授权失败
    • Lambda 执行问题

 

 

API 可观测性

在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 一个 API 定义服务多个环境
  • API Gateway 通过阶段管理这些环境
在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 一个 API 定义服务多个环境
  • API Gateway 通过阶段管理这些环境
  • 阶段是一个具名引用
  • 指向您 API 配置的部署快照
在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 一个 API 定义服务多个环境
  • API Gateway 通过阶段管理这些环境
  • 阶段是一个具名引用
  • 指向您 API 配置的部署快照
  • 常见阶段名:
    • Dev
    • Test
    • QA 和 Prod
在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 一个 API 定义服务多个环境
  • API Gateway 通过阶段管理这些环境
  • 阶段是一个具名引用
  • 指向您 API 配置的部署快照
  • 常见阶段名:Dev、Test、QA、Prod
  • 调用 URL 会体现阶段差异
在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 一个 API 定义服务多个环境
  • API Gateway 通过阶段管理这些环境
  • 阶段是一个具名引用
  • 指向您 API 配置的部署快照
  • 常见阶段名:Dev、Test、QA、Prod
  • 调用 URL 会体现阶段差异
  • 多个阶段可指向同一部署以便即时回滚
在 AWS 上开发应用

阶段:跨环境管理 API

 

阶段

  • 变更仅在部署到阶段后才生效
在 AWS 上开发应用

阶段能力

  • 各阶段独立配置
  • 配置包含阶段变量
  • 阶段变量为键值对
  • 将同一部署路由到不同后端
  • 环境变更无需重新部署

 

阶段

在 AWS 上开发应用

阶段能力

  • 金丝雀部署
    • 仅适用于 REST API
    • 将部分流量引向新部署
    • 提升为全面发布
    • 删除金丝雀以回滚

 

阶段

在 AWS 上开发应用

阶段能力

  • 限流
    • 在阶段级别设置
    • 适用于所有方法,可按方法覆盖

 

阶段

在 AWS 上开发应用

阶段能力

  • 限流
    • 在阶段级别设置
    • 适用于所有方法,可按方法覆盖
  • 缓存
    • 仅适用于 REST API
    • 在阶段缓存后端响应
    • 客户端可用 Cache-Control 绕过
    • TTL 0–3600 秒,默认 300

 

阶段

在 AWS 上开发应用

阶段能力

  • 日志有两种模式
    • 访问日志
    • $context 变量构建并发送到 CloudWatch 日志组
    • 执行日志
    • 捕获完整请求与响应详情

 

阶段

在 AWS 上开发应用

让我们一起练习吧!

在 AWS 上开发应用

Preparing Video For Download...