用途:该模式解决“需要低成本、全球分发且带鉴权、但不要求用户登录的前端托管”问题。做法是在 S3 上托管静态构建产物,用 CloudFront 做全球 CDN,用 Lambda@Edge 拦截请求完成透明鉴权,并通过 Origin Access Control 保护 S3,使仅 CloudFront 可访问。
主要能力:S3 存放 HTML、JS、CSS;CloudFront 提供全球加速与 HTTPS 跳转;Lambda@Edge 在 VIEWER_REQUEST 阶段校验 URL 中的 token、设置 auth_token Cookie,已有 Cookie 则放行;无有效凭证时返回公开视图或错误。特点是无需 7x24 服务器、按存储与带宽计费、自动应对流量峰值、无服务端漏洞面。
使用方式:在 CDK 中创建非公开的 S3 桶与 CloudFront 分发,绑定边缘函数版本;边缘函数从查询串取 token,校验签名与过期时间后以 302 设置 Secure、HttpOnly Cookie。部署流程为构建前端、部署 WebStack、aws s3 sync 上传、aws cloudfront create-invalidation 刷新缓存。
限制:Lambda@Edge 必须部署在 us-east-1,主基础设施在其他区域时需拆分栈,并通过 SSM Parameter Store 传参而非直接引用。不适合服务端渲染、实时更新、复杂鉴权流程与高频内容更新场景,这些应改用 ECS/Lambda 配合 API Gateway、WebSocket 或 Cognito Hosted UI 等方案。该模式为参考范式,需按自身情境调整,不应照抄。