当前位置:  开发笔记 > 前端 > 正文

CloudFront + S3网站:应显示隐式索引文档时"指定的密钥不存在"

如何解决《CloudFront+S3网站:应显示隐式索引文档时"指定的密钥不存在"》经验,为你挑选了2个好方法。

我刚刚在Amazon S3上部署了一个静态网站,目前可以在这里查看:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/

如果单击任何文章链接,您会注意到以下错误:

S3错误

S3抱怨该文件不存在.现在,这就是奇怪的 - 我在我的域名上使用CloudFront.因此,当您单击该文章链接时,它会将请求发送到CloudFront,然后CloudFront尝试从S3存储桶中取回文件.

但是,如果您直接从S3访问相同的URL,例如:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/2015/building-a-heroku-addon-planning/页面加载就好了.

看来这里有些东西在翻译中迷失了.

有人建议我可以做些什么来修复我的设置?



1> Michael - sq..:

我会走出一条路,并说指定的密钥在技术上并不存在,因此错误信息在技术上是准确的,但并不能说明整个故事.这应该是一个简单的解决方案.

S3存储桶有两个端点,"REST"和"网站".它们有两个不同的功能集.网站端点提供了索引文档的神奇解决方案(例如index.html,它似乎是在您提供的示例中实际应该返回到浏览器的内容),而REST端点则没有.

在用于网站托管的存储桶前配置CloudFront时,通常不希望通过从下拉列表中选择存储桶名称将源配置为"S3"源.相反,您希望将其配置为"自定义"源,并使用S3控制台中提供的网站端点主机名(例如example-bucket.s3-website-us-east-1...),否则,CloudFront假定您希望它使用存储桶的REST端点(允许进行身份验证)和私人内容,网站端点没有).

重要

请勿从列表中选择存储桶的名称,例如example.com.s3.amazonaws.com.

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-cfdist.html

自从这个问题最初得到回答后,文档被重构了,所以上面显示的消息现在出现在一页之后,并且已经重新编写,但要点是相同的."桶的名称"似乎是指下拉列表中显示的选项,这不是您想要的.

注意

请务必指定静态网站托管端点,而不是桶的名称.

http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-cloudfront-walkthrough.html

您正在使用存储桶的REST端点的提示是因为如果您使用网站端点,则错误消息将不是XML格式.

如上所述,为CloudFront分配创建新原点,然后更改行为以将请求发送到新原点,然后发送CloudFront缓存失效请求/*,您应该设置.

也可以看看:

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff


¹两个端点.从技术上讲,有两个以上,因为所有存储桶至少有两个REST端点主机名...但有两种类型的端点.存储桶还具有传输加速端点,该端点使用AWS边缘网络进行更快/更优化的传输,尤其是距离配置存储区域较远的地理位置.这看起来https://example-bucket.s3-accelerate.amazonaws.com如果你激活它,并且因为你使用更多的AWS网络而不是公共互联网而需要额外的使用费...但是,这是端点部署的差异,而不是端点的行为端点.传输加速端点仍然是REST端点,因此就像其他REST端点一样,它没有网站托管功能.您不希望将CloudFront配置为使用加速端点,因为这不会提供任何改进(CloudFront已经使用边缘网络),但您仍需要支付额外的加速费用.


是啊!非常感谢.超级有帮助.我希望那个犯这个愚蠢错误的人能找到你的答案也有用=)
谢谢!这正是我的问题所在.这很有趣,因为我以前用这种方式部署了很多网站,这从来都不是问题 - 我想这一切都是相对好运的,因为我的网站主要是单页.嘿.
@markdsievers你会发现CloudFront调整通常会在几分钟内开始工作.如果对变更是否按预期工作有疑问,您只需要等待分配转换回"已部署".如果你知道你弄错了,你可以推动其他更改而不会产生不良影响.它还有助于加快故障排除,如果您遇到错误,[将错误缓存最小TTL清零](/sf/ask/17360801/) - 使用不同的计时器缓存错误响应.

2> Miguel Mota..:

遇到同样的问题以及我如何解决它是在CloudFront Origin Settings中将Origin Domain Name 设置.s3-website-us-west-2.amazonaws.com

在CloudFront的生成设置确保有index.html作为默认的根对象.

在S3中,请确保使用此存储桶来托管选定的网站并将其设置index.html索引文档.


你我的男人,是一个传奇,你不知道我找了这个答案多久了!我使用了类似的设置来托管图片并通过lambda和API Gateway运行图片大小调整脚本。
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有