测试与部署您的 API
在 AWS 上开发应用
Ricardo Sueiras
Principal Technologist
开发者的基础设施即代码(IaC)
- 云原生应用用 IaC 部署。
- 在配置文件中定义云资源。
- 避免在 AWS 控制台手动操作(clickops)。
AWS CloudFormation
- AWS 中基础的 IaC 服务。
- 用 YAML 或 JSON 模板定义 AWS 资源。
AWS Cloud Development Kit(CDK)
- CDK 用代码定义 IaC。
- 用 Python、TypeScript 或 Java,而非 YAML 或 JSON。
- 部署时合成为 CloudFormation 模板。
AWS Serverless Application Model(SAM)
- 基于 CloudFormation 扩展。
- 为无服务器资源与 API 提供简化语法。
- 充当转换层。
- 将 SAM 语法转换为完整的 CloudFormation 模板。
SAM 功能
- 自动生成最小权限的 IAM 角色,并可细化调整。
- 将部署流水线定义为配置。
- 用
sam build 和 sam deploy 打包并部署。
- 用
sam validate 及早发现模板错误。
- 用
sam local start-lambda 本地模拟 Lambda。
使用 SAM 测试
- 部署前在本地构建、调用并测试无服务器应用。
- 测试 Lambda 函数与 API Gateway 集成。
- 用
sam local invoke 本地调用函数。
- 用
sam local start-api 模拟 API Gateway。
单元测试
- 结合单元测试验证 Lambda 行为。
- 本地测试可加快迭代。
- 搭配
pytest、JUnit 或 Jest 等框架。
测试流程
- 用
sam local generate-event 生成测试事件。
- 输出 JSON 事件文件。
- 用
sam local invoke FunctionName -e event.json 本地调用。
- 在部署前加入断言以验证响应。
模拟 AWS 服务
- 将本地测试与
moto 等模拟库结合。
- 与模拟的 AWS 服务交互,无需真实调用。
- 提升测试速度。
- 降低测试成本。
- 验证限流或失败等错误场景。
持续集成与持续部署(CI/CD)
- SAM 应用常通过 CI/CD 流水线部署。
- 自动构建、测试、打包与部署。
- AWS CodeCommit 存储代码与 SAM 模板。
- AWS CodeBuild 运行测试与
sam build。
- AWS CodePipeline 编排流程。
CI/CD 流程
- 将源码与 SAM 模板提交到仓库。
- 运行自动化测试与校验。
- 用
sam build 打包应用。
- 用
sam deploy 部署资源。
- 部署后用 CloudWatch 监控。
部署排错
- 排错是关键运维技能。
- 常见部署失败:
- IAM 权限问题。
- 无效的 SAM 或 CloudFormation 模板。
- Lambda 打包失败或缺少依赖。
- API Gateway 配置错误。
部署排错
- SAM 部署底层运行在 CloudFormation 上。
- 提供堆栈事件与自动回滚。
- 有助于定位部署失败。
- 回滚可恢复到先前环境状态。
部署排错
- 使用以下方式排错:
- CloudWatch Logs。
- API Gateway 执行日志。
- Lambda 日志。
- CloudWatch 指标。
Preparing Video For Download...