You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置CloudFront为不同地区用户返回对应区域S3存储桶内容

默认配置下CloudFront不会自动根据用户地理位置切换源站,你可以按以下步骤配置实现区域就近返回对应S3桶内容:

配置步骤
  • 步骤1:开启地理位置请求头传递
    进入CloudFront分发配置页,打开「行为」选项卡,编辑默认行为,在「缓存键和源请求」设置中,将以下地理位置头添加到源请求策略和缓存键中:
    • CloudFront-Viewer-Country:用户所属国家/地区代码
    • 如需美国州级、中国省级这类更精细的区域划分,额外添加CloudFront-Viewer-Region头
  • 步骤2:部署区域路由逻辑
    二选一即可,优先推荐CloudFront Functions,延迟更低、成本更少:

    方案A:CloudFront Functions

    编写如下路由函数,替换示例中的映射规则为你自己的S3源站信息:
    function handler(event) {
      const request = event.request;
      // 区域与对应S3源站的映射,替换为你的实际配置
      const regionOriginMap = {
        // 美国弗吉尼亚区域对应us-east-1桶
        'US-VA': 'my-us-east-1-bucket.s3.us-east-1.amazonaws.com',
        // 德国对应eu-west-1桶
        'DE': 'my-eu-west-1-bucket.s3.eu-west-1.amazonaws.com',
        // 新加坡对应ap-southeast-1桶
        'SG': 'my-ap-southeast-1-bucket.s3.ap-southeast-1.amazonaws.com',
        // 其余区域走默认源站
        'DEFAULT': 'my-default-bucket.s3.us-west-2.amazonaws.com'
      };
      const viewerRegion = request.headers['cloudfront-viewer-region']?.value || 'DEFAULT';
      const viewerCountry = request.headers['cloudfront-viewer-country']?.value || 'DEFAULT';
      const targetOrigin = regionOriginMap[viewerRegion] || regionOriginMap[viewerCountry] || regionOriginMap.DEFAULT;
      // 改写请求源站
      request.origin = {
        s3: {
          domainName: targetOrigin,
          region: targetOrigin.split('.')[2],
          authMethod: 'origin-access-identity',
          path: ''
        }
      };
      request.headers['host'] = { value: targetOrigin };
      return request;
    }
    
    保存函数后,将其关联到CloudFront分发的查看器请求事件触发。

    方案B:Lambda@Edge

    如果你需要更复杂的路由逻辑(比如权重灰度、自定义IP库匹配),可以部署对应运行时的Lambda@Edge函数,关联到「源请求」事件触发即可,核心逻辑和上述函数一致。
  • 步骤3:调整缓存策略
    确认你的缓存策略已将CloudFront-Viewer-Country、CloudFront-Viewer-Region纳入缓存键规则,避免不同区域用户命中同一份缓存导致路由失效。
  • 步骤4:测试验证
    等待CloudFront配置部署完成(通常耗时5~10分钟),清理测试工具缓存后再进行跨区域访问验证即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:54:04