我想配置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 .
我究竟做错了什么?
提前致谢