logo
2
0
WeChat Login

学时发放系统

基于 AWS Lambda、API Gateway、DynamoDB、S3 和 CloudFront 的低成本学时发放系统。

架构

  • 前端静态站点放在 S3,由 CloudFront 统一分发
  • API 由 API Gateway HTTP API + Lambda 提供
  • 数据层使用 DynamoDB 单表设计
  • 审核接口通过 x-admin-token 保护
  • 自定义域名使用 xs.mysite.com
  • 证书使用已上传到 IAM 的服务器证书,不使用 ACM

目录

  • template.yaml:AWS SAM 基础设施
  • src/:Lambda 业务代码
  • public/:S3 静态前端
  • tests/:服务级测试

本地开发

安装依赖后运行:

npm install npm test npm run build

部署

  1. 准备参数:AdminTokenIamCertificateId
  2. 使用 AWS SAM 部署:
sam build sam deploy --guided
  1. public/ 中的静态文件同步到 S3
  2. 通过 CloudFront 域名访问站点

域名

xs.mysite.com 配成 CNAME,指向 CloudFront 输出的分配域名。

如果你要用腾讯云 DNS,可以用 tccli --profile test 更新 xs.mysite.com 对应记录到 CloudFront 域名。

API

  • POST /api/events:创建活动
  • GET /api/events/{eventId}:读取活动元数据
  • POST /api/events/{eventId}/register:学生扫码登记
  • POST /api/events/{eventId}/tasks:管理员批量生成任务单
  • POST /api/events/{eventId}/tasks/{shortId}/verify:管理员 PDA 审核
  • GET /api/events/{eventId}/students/export:导出名单 CSV

集成测试

当前仓库提供的是服务级测试,用于覆盖:

  • 直接发学时流程
  • 审核模式下的登记与核销流程

执行:

npm test

费用控制

  • CloudFront 只保留一个静态站点和一个 API 转发行为
  • DynamoDB 使用按需计费
  • Lambda 使用 arm64 和较低内存配置
  • 前端直接由 S3 + CloudFront 提供,不额外引入多余服务

About

基于aws stack的学时发放系统

Language
TypeScript43.9%
JavaScript34.2%
HTML13.5%
CSS8.4%