Kiv*_*van 22 amazon-s3 amazon-web-services amazon-cloudfront
我用一些文件创建了s3存储桶.我使用该S3存储桶创建了CloudFront分配,并将状态更改为已部署.
当我为任何文件卷曲CloudFront时,我得到:
<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Bucket>MY-BUCKET</Bucket><Endpoint>MY-BUCKET.s3-eu-west-1.amazonaws.com</Endpoint><RequestId>...</RequestId><HostId>...</HostId></Error>
Run Code Online (Sandbox Code Playgroud)
当我为任何文件卷曲我的S3存储桶时,我得到了该文件内容.
我究竟做错了什么?如何强制cloudfront缓存文件,以便客户端不需要直接从S3获取数据?
Kiv*_*van 38
Thx Matt Houser评论到我的第一篇文章!
当分发尚未完全准备好时,CloudFront似乎缓存了我对文件的第一个请求(但当时它处于已部署状态,所以要小心!).我请求对缓存中的所有文件进行无效,花了几分钟,但在失效后,所有文件都使用CloudFront网址使用http 200卷曲.
Michael-sqlbot发表评论后问题变得清晰了:
所有存储桶至少有两个REST端点主机名.在eu-west-1中,他们是example-bucket.s3-eu-west-1.amazonaws.com和example-bucket.s3.amazonaws.com.创建存储桶时,第一个将立即生效.第二个 - 有时也称为"全局端点" - 这是CloudFront使用的 - 不会,除非存储桶位于us-east-1中.在几秒到几分钟的时间内,根据位置和其他因素变化,它也可以在全球范围内访问.在此之前,返回307重定向.因此,水桶没有准备好.
Bal*_*zar 14
如果它发生在你身上,为了澄清一点,有几个选择:
将您的存储桶位置更改为us-east-1区域。
但最简单的方法可能是将您的 CloudFront 源域名从 切换<bucket>.s3.amazonaws.com到<bucket>.s3-<region>.amazonaws.com
转到您的分发设置 -> 来源和来源组并编辑当前来源
例如,区域中有一个名为 stackoverflow 的桶us-west-2,它会变成
stackoverflow.s3-us-west-2.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10913 次 |
| 最近记录: |