1

我创建了四个 S3 存储桶,每个存储桶都有一个简单的index.html文件,每个存储桶都有独特的内容。

我创建了一个 CloudFront 分配并为其分配了四个来源,四个存储桶中的每一个都有一个。

每个来源都有一个来源访问身份,并且 OAI 已在其相关存储桶的策略中使用,例如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity 123456789ABCDE"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-first-test-bucket/*"
        }
    ]
}

我也为每个桶设置Block all public access了。true

当我访问 CloudFront 分配名称时,我会看到我所在区域的内容。

但是,当我使用地理浏览器测试来自另一个区域(一个更靠近其他存储桶之一)的分布时,我看到了相同的内容。

如何配置我的 CloudFront 分配以提供最接近的特定于区域的内容?(例如:通过 CloudFront 为纽约用户提供的 us-east-1 存储桶内容。)

4

2 回答 2

1

地理浏览器并不适合测试,您应该使用良好的 VPN 进行测试。

为了验证我在说什么,尝试进入中国被封锁的网站。地理浏览器会带你到它,但它试图通过更改 IP 地址来欺骗服务器认为连接来自中国。

这不能欺骗 AWS。因此使用 VPN 进行测试(付费的更可取)

更多信息:

AWS Cloudfront CDN 的工作原理:

  1. 当来自特定区域的第一个用户请求文件时
  2. 该文件将从 S3 流式传输(复制)到用户区域中最近的 Cloudfront 服务器
  3. 该文件将临时保留在此服务器上(通常为 24 小时)
  4. 当来自同一区域的第二个用户请求相同的文件时,他/她也会从 Cloudfront 关闭服务器获取副本。
  5. 如果相同的文件在 S3 上发生变化,它也会在很短的时间内在 Cloudfront 中发生变化(从 1 秒到 5 分钟)
  6. 因此,只有第一次请求文件会受到 S3 存储桶距离的影响,可以忽略不计。
  7. 我的建议是仅将 1 个 S3 存储桶与指定内容的文件夹一起使用,具体取决于本地(us、fr、gb、...等),并依靠 Cloudfront CDN 将内容分发到每个区域的不同 CDN 服务器。我以这种方式使用 Cloudfront,我在这里写的所有内容都来自我之前做过的真实实验。
  8. 结论:如果您使用 CDN,则存储服务器的位置不是快速交付内容的因素。
于 2021-09-28T22:24:17.417 回答
0

您可以使用 Route53 流量策略。添加地理定位规则,然后添加 Cloudfront 分发作为端点。

在此处输入图像描述

于 2021-09-28T22:57:25.737 回答