Route53和Cloudfront 请求无法满足?

29
我想把我的s3文件放在cdn.mydomain.com上,所以我创建了一个CloudFront分配,它在https://dxxxxxxxx.cloudfront.net/test.jpg上正常工作-我可以得到这张图片。
现在,我想将我的cdn.domain.com域名与route53中的CloudFront关联。
所以我创建了A记录类型-A-IPv4地址,名称为cdn.domain.com别名目标设置为手动输入的dxxxxxxxx.cloudfront.net
但当我打开以下网址时:http://cdn.mydomain.com/test.jpg,我遇到了错误:
403 ERROR
The request could not be satisfied.
Bad request. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
Generated by cloudfront (CloudFront)

我该如何配置才能避免出现问题?
4个回答

37

之前我遇到过这个问题。请求被CloudFront阻止了。

请检查以下清单:

  • 将CDN域名添加到CloudFront的备用域名中。一旦您将CDN域名添加到CloudFront中,您可以选择CloudFront终端节点而不需要输入

  • WAF(如果有)没有阻止您的请求

  • 检查Http和Https


7
好的,如你所说。我只是需要填写"Alternate Domain Names": "cdn.mydomain.com"并使用SSL(若不使用SSL,无法保存)。之后我设置了一个A记录别名,将其指向列表中的CloudFront。现在它可以正常使用了。谢谢! - Jon Sud
4
这个特定的案例可以归因于缺失/不正确的备用域名,因为错误信息中存在自相矛盾--它说“403”,但又说“Bad Request”,而真正的无效请求响应是HTTP状态码400,而不是403。当CloudFront找不到与传入的HTTP Host标头匹配的备用域名分发时,它会这样做。WAF阻止是403,但错误内容不会显示“Bad Request”。 - Michael - sqlbot

3
在我的情况下,错误是由于简单地发送了一个带有请求体的GET请求造成的,移除这个请求体解决了问题。

0
我遇到过类似的问题。比如说,如果你正在使用Postman测试你的端点,请确保所有(或至少大部分适用的)默认头部键和它们对应的值都被选中。这些可以在头部选项卡中找到。
下面的截图展示了Postman中的默认键和值(我排除了我的授权键和对应的值)。

default keys and values within postman(excluding the Authorization key and its corresponding value)


0
你需要在CFront中设置一个备用域名。输入你想要别名的域名(CNAME)。例如,如果我的域名是example.com,我想要一个CNAME记录为'accounts'(如accounts.example.com)指向我的CFront分发,那么将accounts.example.com作为备用域名。然后你需要为此创建一个证书。在ACM中使用相同的域名(accounts.example.com)创建一个证书。你需要验证证书,所以选择DNS选项。在ACM中创建他们给你的CNAME/Value,这是为了向AWS证明你拥有域名example.com。完成后,几分钟后它将批准证书。accounts.example.com现在应该重定向到你的CFront分发终点。在我的情况下,我的CFront源是一个S3网站,所以我的流程是DNS CNAME -> CFront分发URL -> S3网站URL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接