我想配置一个AWS CloudFront CDN以提供来自两个AWS S3存储桶的HTML静态内容。一个存储桶应将对象托管在根目录中,第二个存储桶应将对象托管在特定的子路径中。
第一个存储桶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/*"
}
]
}
CDN配置为响应名称“ host.domain.tld”。
CDN配置为具有2个起源:
myapp.home
,具有以下属性:
myapp.home.s3.amazonaws.com
myapp.subpage
,具有以下属性:
myapp.subpage.s3.amazonaws.com
这些来源与2个缓存行为有关:
myapp.subpage
:myapp.home
: myapp.home
的来源似乎可以正常工作,但是myapp.subpath
总是使用以下所有URI返回AccessDenied错误:
更新:我还尝试使用S3网站域(例如 myapp.subpath.s3-website-eu-west-1.amazonaws.com ,而不是普通存储桶域:首页仍然可以正常工作,但是这次子路径返回一个带有消息的404消息:“指定的键并不适用于以上所有URI。
我在做什么错了?
预先感谢
答案 0 :(得分:0)
第一个行为中的“ subpage / *”是myapp.subpage
中的目录。
在存储桶中创建一个名为subpage
的目录,然后将index.html放入该存储桶。
像下面这样:
* myapp.subpage <bucket name>
* subpage <directory>
* index.heml