如何在Cloudfront上的静态托管网站上为子目录设置默认根对象?具体来说,我希望www.example.com/subdir/index.html
在用户要求时提供服务www.example.com/subdir
。请注意,这是为了交付S3存储桶中的静态网站。此外,我想使用原始访问身份将对S3存储桶的访问限制为仅Cloudfront。
现在,我知道Cloudfront的工作方式与S3和Amazon状态特别不同:
CloudFront默认根对象的行为与Amazon S3索引文档的行为不同。当您将Amazon S3存储桶配置为网站并指定索引文档时,即使用户请求存储桶中的子目录,Amazon S3也会返回索引文档。(索引文档的副本必须出现在每个子目录中。)有关将Amazon S3存储桶配置为网站以及有关索引文档的更多信息,请参阅Amazon Simple Storage Service开发人员指南中的在Amazon S3上托管网站。
因此,即使Cloudfront允许我们指定默认的根对象,这仅适用于www.example.com
而不适用于www.example.com/subdir
。为了解决这个难题,我们可以更改原始域名以指向S3给定的网站端点。这很好用,并且可以统一指定根对象。不幸的是,这似乎与原始访问身份不兼容。具体来说,以上链接指出:
更改为编辑模式:
Web分发–单击“起源”选项卡,单击要编辑的起源,然后单击“编辑”。您只能为Origin类型为S3 Origin的Origin创建一个Origin访问标识。
基本上,为了设置正确的默认根对象,我们使用S3网站终结点而不是网站存储桶本身。这与使用原始访问身份不兼容。因此,我的问题归结为
是否可以为Cloudfront上的静态托管网站的所有子目录指定默认的根对象?
是否可以为从Cloudfront提供的内容(其来源是S3网站终结点而不是S3存储桶)设置来源访问身份?