我想配置AWS CloudFront CDN,以便从两个AWS S3存储桶提供HTML静态内容 . 一个存储桶应该托管根目录中的对象,第二个存储桶应该托管特定子路径中的对象 .

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配置有2个来源:

  • myapp.home ,具有以下属性:

  • 来源域名: myapp.home.s3.amazonaws.com

  • 原点路径:空

  • 原点类型:S3原点

  • myapp.subpage ,具有以下属性:

  • 来源域名: myapp.subpage.s3.amazonaws.com

  • 原点路径:空

  • 原点类型:S3原点

这些起源与2个缓存行为相关联:

  • 第一行为

  • 原产地:水桶 myapp.subpage

  • 优先顺序:0

  • 路径模式:子页面/ *

  • 第二行为

  • 原产地:水桶 myapp.home

  • 优先顺序:1

  • 路径模式:默认(*)

问题

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

  • host.domain.tld / subpath

  • host.domain.tld / subpath /

  • host.domain.tld / subpath / index.html

Update :我还尝试使用S3网站域名替换原点,例如myapp.subpath.s3-website-eu-west-1.amazonaws.com,而不是普通的桶域:主页仍然可以工作,但这次子路径返回404消息:"The specified key does not exist"上面的所有URI .

我究竟做错了什么?

提前致谢