【问题标题】:CloudFront origin for specific region content特定区域内容的 CloudFront 源
【发布时间】:2023-04-03 05:23:01
【问题描述】:

我创建了四个 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 分配名称时,我会看到我所在地区的内容。

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

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

【问题讨论】:

    标签: amazon-s3 amazon-cloudfront aws-serverless aws-regions


    【解决方案1】:

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

    要验证我在说什么,请尝试enter a blocked website in China。地理浏览器会带你到它,但它试图通过更改 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,则存储服务器的位置不是快速交付内容的因素。

    【讨论】:

    • 我请了另一个国家的朋友来测试。在英国和法国有一个存储桶/来源,每个都在各自的index.html 文件中包含不同的消息,我们在访问 CloudFront 域名时都看到了相同的内容(不涉及自定义域。)我需要做什么如何让每个区域从其最近的存储桶中获取内容?
    • 使用 Amazon CDN (Cloudfront) 时,您无需担心要从最近的存储桶中为每个区域提供内容,因为用户不会直接连接到他们连接到的存储桶CDN。我的建议是仅将 1 个存储桶与指定内容的文件夹一起使用,具体取决于本地(us、fr、gb、...等),并依靠 CDN 将内容分发到每个区域的不同 CDN 服务器。如果您对此想法感兴趣,我可以详细说明
    • 谢谢@Jabbar - 更多细节会很棒。我知道用户不会直接连接到存储桶,但让存储桶包含特定于区域的内容(用于预渲染内容等)似乎是合乎逻辑的
    • @MattW 我用更多信息编辑了我的答案
    • @MattW 有帮助吗?
    【解决方案2】:

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

    【讨论】:

    • 当我说“访问分发域名”时,我指的是 CloudFront 名称。我还没有涉及自定义域名。 (为清楚起见,已编辑帖子。)如何仅使用 CF 域名进行此(区域内容服务)?
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多