具有多个S3来源的AWS CloudFront [英] AWS CloudFront with multiple S3 origins

查看:0
本文介绍了具有多个S3来源的AWS CloudFront的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想配置一个AWS CloudFront CDN来提供来自两个AWS S3存储桶的静态内容。一个存储桶应承载根目录中的对象,第二个存储桶应承载特定子路径中的对象。

S3配置

第一个存储桶myapp.home应将主页和所有其他对象直接托管在"/"下。

第二个存储桶myapp.subpage应该用于相同的目的,但用于以"/subpage/"开头的一组特定URL。

这两个存储桶都配置了"静态网站托管"选项,并且默认文档"index.html"已上载到这两个存储桶。

两个存储桶都已使用以下策略公开(在myapp.subpage的情况下,已相应地调整了资源)

{
    "Version": "2012-10-17",
    "Id": "Policy1529690634746",
    "Statement": [
        {
            "Sid": "Stmt1529690623267",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myapp.home/*"
        }
    ]
}

CloudFront配置

CDN配置为响应名称"host.domain.tld"。

CDN配置有两个来源:

  1. 存储桶myapp.home,具有以下属性:
    • 源域名:myapp.home.s3.amazonaws.com
    • 源路径:空
    • 来源类型:S3来源
  2. 存储桶myapp.subpage,具有以下属性:
    • 源域名:myapp.subpage.s3.amazonaws.com
    • 源路径:空
    • 来源类型:S3来源

这些来源链接到2个缓存行为:

  1. 第一行为
    • 来源:存储桶myapp.subpage
    • 优先级:0
    • 路径模式:子页面/*
  2. 第二行为
    • 来源:存储桶myapp.home
    • 优先级:1
    • 路径模式:默认(*)

问题

myapp.home源似乎工作正常,但myapp.subpath始终使用以下所有URI返回AccessDended错误:

  • Host.domain.tld/子路径
  • Host.domain.tld/子路径/
  • host.domain.tld/subpath/index.html

更新:我还尝试使用S3网站域名替换来源,例如myapp.subpath.s3-website-eu-west-1.amazonaws.com,,而不是普通的桶域名:主页仍然可以工作,但这次子路径返回404,上面的所有URI都有消息:"指定的键不存在"。

我做错了什么?

提前谢谢

推荐答案

第一行为中的子页面/*是myapp.subpage中的目录。
在存储桶中创建一个名为subpage的目录,然后将index.html放入该存储桶中。

如下:

* myapp.subpage <bucket name>
  * subpage <directory>
     * index.html

这篇关于具有多个S3来源的AWS CloudFront的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆