You need to enable JavaScript to run this app. 多租户B2B Serverless应用按租户配置自定义子域名的实现方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

多租户B2B Serverless应用按租户配置自定义子域名的实现方案咨询

多租户Serverless子域名访问落地方案

核心问题明确回应

CloudFront多子域名指向能力

  • 完全支持将任意数量的租户子域名绑定到同一CloudFront分发节点,仅需将*.example.com作为单个自定义域名(ALIAS)添加到分发配置即可,无需为每个租户单独添加条目
  • 单CloudFront分发的自定义域名(ALIAS)有100个的数量上限,泛域名仅占1个条目,完全可以满足大规模租户的域名需求
  • 所有子域名请求可统一回源到公共S3前端桶,路由、校验逻辑全部在边缘层完成,不需要逐个子域名配置S3映射

泛域名垃圾请求拦截方案

  • 直接配置*.example.com泛域名CNAME到CloudFront不会出现无拦截的垃圾流量,所有命中泛域名的请求会在边缘层做租户有效性校验,无效请求直接拦截,不会回源到S3
  • 不需要为每个租户单独配置DNS解析记录,单条泛域名记录即可覆盖所有租户子域名

完整Serverless实现流程

预配置基础设施(一次性部署完成)

  • 创建公共前端S3桶,托管统一的前端静态资源
  • 创建单CloudFront分发,回源配置指向S3桶,绑定Viewer Request触发的Lambda@Edge函数做请求处理
  • 在Route53配置*.example.com泛域名CNAME记录,指向CloudFront默认域名;提前申请泛域名对应的ACM证书(需部署在us-east-1区域),绑定到CloudFront的HTTPS监听配置
  • 创建DynamoDB租户配置表,主键为tenant_subdomain,存储租户对应的Cognito池ID、身份池ID、启用状态等核心配置

新租户自动化接入流程(通过Serverless框架编排资源)

新租户接入时仅需执行三步操作,无额外域名/分发配置:

  1. 自动创建租户专属Cognito用户池、身份池,绑定对应权限边界的IAM角色,确保租户只能访问自身分区的DynamoDB数据
  2. 向DynamoDB租户配置表写入记录,将自定义子域名与上述Cognito资源、启用状态做映射
  3. 无需调整DNS、CloudFront、S3的任何配置,租户子域名即刻生效

边缘层请求处理逻辑(Lambda@Edge实现)

所有子域名请求到达CloudFront边缘节点后,先执行前置校验:

  • 从请求头提取Host字段,拆分出当前请求的子域名前缀
  • 查询DynamoDB租户配置表(查询结果做1分钟短周期缓存,降低DynamoDB调用成本与延迟):
    • 若子域名不存在、状态为未启用:直接返回404状态码与自定义无效提示页,不触发S3回源,拦截所有垃圾请求
    • 若校验通过:从DynamoDB记录中读取租户对应的Cognito配置,动态注入到请求上下文(前端通过请求头读取配置,初始化对应租户的Cognito SDK),放行请求回源到S3拉取前端静态资源

运维与成本优化注意事项

  • 不要为每个租户单独创建CloudFront分发,会大幅提升运维复杂度与成本,单分发+边缘校验的架构可支撑数千级租户规模
  • 租户停用、注销时,仅需修改DynamoDB中对应记录的启用状态,边缘层会自动拦截该子域名的所有请求,无需调整任何基础设施配置
  • 静态资源(JS/CSS/图片)开启CloudFront长缓存,仅HTML页面不缓存,兼顾访问速度与租户配置动态注入的需求
  • Lambda@Edge配置最小权限IAM角色,仅允许查询DynamoDB租户表,避免权限过度带来的安全风险

内容的提问来源于stack exchange,提问作者systemdebt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 01:36:04