具有多个S3来源的AWS CloudFront [英] AWS CloudFront with multiple S3 origins
本文介绍了具有多个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配置有两个来源:
- 存储桶
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返回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屋!
查看全文