如何为 Cloudfront 上静态托管网站上的子目录设置默认根对象?具体来说,我想www.example.com/subdir/index.html
每当用户请求时提供服务www.example.com/subdir
。请注意,这是为了交付保存在 S3 存储桶中的静态网站。此外,我想使用原始访问身份将对 S3 存储桶的访问限制为仅 Cloudfront。
现在,我知道 Cloudfront 的工作方式与 S3 和亚马逊状态不同具体来说 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html:
CloudFront 默认根对象的行为不同于
Amazon S3 索引文档的行为。当您配置 Amazon S3 时
Bucket作为网站并指定索引文档,Amazon S3返回
即使用户请求索引文档中的子目录
桶。 (索引文档的副本必须出现在每个
子目录。)有关配置 Amazon S3 的更多信息
存储桶作为网站以及有关索引文档,请参阅托管
Amazon Simple Storage Service 中的 Amazon S3 网站章节
开发者指南。
因此,即使 Cloudfront 允许我们指定默认根对象,但这仅适用于www.example.com
而不是为了www.example.com/subdir
。为了解决这个困难,我们可以将源域名更改为指向S3给出的网站端点。这非常有效,并且允许统一指定根对象。不幸的是,这似乎与原始访问身份 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html。具体来说,上述链接指出:
更改为编辑模式:
Web 分发 – 单击“源”选项卡,单击要编辑的源,然后单击“编辑”。您只能创建原始访问
源类型为 S3 源的源的身份。
基本上,为了设置正确的默认根对象,我们使用 S3 网站端点而不是网站存储桶本身。这与使用源访问身份不兼容。因此,我的问题可以归结为
是否可以为 Cloudfront 上静态托管网站的所有子目录指定默认根对象?
是否可以为 Cloudfront 提供的内容设置源访问身份,其中源是 S3 网站端点而不是 S3 存储桶?
There IS一种方法来做到这一点。不要通过在下拉列表中选择它来将其指向您的存储桶 (www.example.com.s3.amazonaws.com),而是将其指向您的存储桶的静态域(例如 www.example.com.s3-website-us -west-2.amazonaws.com):
谢谢此 AWS 论坛主题 https://forums.aws.amazon.com/thread.jspa?threadID=84964
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)