设置
我有一个最初设置为安全的Amazon Cloudfront发行版 . 此分发中的对象需要URL签名 . 例如,有效的URL通常具有以下格式:
分发指向一个曾经被保护的S3存储桶(它只允许通过 Cloud 端访问) .
发生了什么事
在某些时候,URL唱歌过期并返回403 .
由于我们不再需要保持相同的安全级别,因此我最近更改了 Cloud 端分发和它所指向的S3存储桶的设置,两者都是公开的 .
然后我尝试使此分发中的对象无效 . 失效没有抛出任何错误,但失效似乎没有成功 . 对同一个 Cloud 端URL(带或不带查询字符串)的请求仍返回403 .
响应标头如下所示:
HTTP/1.1 403 Forbidden
Server: CloudFront
Date: Mon, 18 Aug 2014 15:16:08 GMT
Content-Type: text/xml
Content-Length: 110
Connection: keep-alive
X-Cache: Error from cloudfront
Via: 1.1 3abf650c7bf73e47515000bddf3f04a0.cloudfront.net (CloudFront)
X-Amz-Cf-Id: j1CszSXz0DO-IxFvHWyqkDSdO462LwkfLY0muRDrULU7zT_W4HuZ2B==
我尝试过的事情
我尝试设置另一个指向与原始服务器相同的S3的 Cloud 端分发 . 对新分发中的同一对象的请求是成功的 .
这个问题
有没有人遇到过返回403的 Cloud 端URL无法失效的情况?是否有任何理由不能使对象失效?
谢谢你的帮助!
1 回答
首先检查Invalidation是否正在进行中 . 如果是,那么等到它完成 .
如果使用公共URL通过CloudFront访问S3对象,则需要对该S3对象具有公共读取权限 .
如果您尝试使用签名URL通过CloudFront访问S3对象,请确保生成签名URL时提及的时间必须大于当前时间 .