rde*_*ges 39 amazon-s3 amazon-web-services amazon-cloudfront
我刚刚在Amazon S3上部署了一个静态网站,目前可以在这里查看:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/
如果单击任何文章链接,您会注意到以下错误:
S3抱怨该文件不存在.现在,这就是奇怪的 - 我在我的域名上使用CloudFront.因此,当您单击该文章链接时,它会将请求发送到CloudFront,然后CloudFront尝试从S3存储桶中取回文件.
但是,如果您直接从S3访问相同的URL,例如:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/2015/building-a-heroku-addon-planning/页面加载就好了.
看来这里有些东西在翻译中迷失了.
有人建议我可以做些什么来修复我的设置?
Mic*_*bot 88
我会走出一条路,并说指定的密钥在技术上并不存在,因此错误信息在技术上是准确的,但并不能说明整个故事.这应该是一个简单的解决方案.
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已经使用边缘网络),但您仍需要支付额外的加速费用.
Mig*_*ota 25
遇到同样的问题以及我如何解决它是在CloudFront Origin Settings中将Origin Domain Name 设置为<website bucket>.s3-website-us-west-2.amazonaws.com
在CloudFront的生成设置确保有index.html作为默认的根对象.
在S3中,请确保使用此存储桶来托管选定的网站并将其设置index.html为索引文档.
sid*_*x64 17
您是否在 S3 上托管 React 站点?可能与 React Router 一起使用吗?
注意:我将我的 S3 存储桶关闭,禁止公共访问,并且我不想将其公开。另外,虽然我面临的问题与上面提出的问题相同,但我的案例的解决方案是不同的。
如果您像我一样不想公开您的 S3 端点,并且在 React Router 中面临这个问题,其中带有路由的直接 URL 在 CloudFront 上返回 403 Forbidden,请继续阅读:
发生这种情况是因为 CloudFront 期望 S3 存储桶包含您的 URL 应该指向的文件。
例如,如果您有一个静态站点“example.com”和一个路由“/stack”,CloudFront 将尝试在您的 S3 存储桶中查找“stack”文件。这显然不存在,CloudFront 会返回错误。
解决此问题的最佳方法是在 CloudFront 中针对 HTTP 错误代码 403 设置自定义错误。自定义错误响应可以指向状态为“200 OK”的“index.html”页面。这将解决错误,将用户指向正确的文件,同时保留原始 URL (example.com/stack),然后 React Router 将拾取该 URL。
| 归档时间: |
|
| 查看次数: |
19778 次 |
| 最近记录: |