架构设计

微信小程序 → API Gateway → AWS Lambda → S3 (数据存储)
                                         ↓
                                    CloudWatch (监控)

后端:AWS Lambda

函数编写

import json
import boto3

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    # 处理请求
    body = json.loads(event['body'])
    # 业务逻辑
    result = process_request(body)
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps(result)
    }

部署要点

  • 使用SAM模板管理基础设施
  • 配置CORS允许小程序域名
  • 设置环境变量管理密钥

前端:微信小程序

请求封装

const request = (url, data) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: `https://xxx.execute-api.region.amazonaws.com/prod${url}`,
      method: 'POST',
      data,
      success: resolve,
      fail: reject
    });
  });
};

踩坑记录

  1. Lambda冷启动:预置并发解决
  2. API Gateway超时:设置30秒超时
  3. 微信域名白名单:添加AWS域名
  4. S3权限:IAM角色配置

成果

  • 响应时间 < 500ms
  • 月成本 < ¥10
  • 支持1000+并发

Serverless是小成本项目的最佳选择。