【问题标题】:Cloudfront - cannot invalidate objects that used to return 403Cloudfront - 不能使用于返回 403 的对象无效
【发布时间】:2014-08-18 15:43:23
【问题描述】:

设置

我有一个最初设置为安全的 Amazon Cloudfront 发行版。此分发中的对象需要 URL 签名。例如,一个有效的 URL 曾经是以下格式:

https://d1stsppuecoabc.cloudfront.net/images/TheImage.jpg?Expires=1413119282&Signature=NLLRTVVmzyTEzhm-ugpRymi~nM2v97vxoZV5K9sCd4d7~PhgWINoTUVBElkWehIWqLMIAq0S2HWU9ak5XIwNN9B57mwWlsuOleB~XBN1A-5kzwLr7pSM5UzGn4zn6GRiH-qb2zEoE2Fz9MnD9Zc5nMoh2XXwawMvWG7EYInK1m~X9LXfDvNaOO5iY7xY4HyIS-Q~xYHWUnt0TgcHJ8cE9xrSiwP1qX3B8lEUtMkvVbyLw__&Key-Pair-Id=APKAI7F5R77FFNFWGABC

分发点指向过去也受到保护的 S3 存储桶(它只允许通过云端进行访问)。

发生了什么

在某个时候,URL 唱歌过期并返回 403。

由于我们不再需要保持相同的安全级别,我最近更改了云端分发和它指向的 S3 存储桶的设置,两者都是公开的。

然后我尝试使此分布中的对象无效。失效没有抛出任何错误,但是失效似乎没有成功。对相同云端 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 的云端分发。对新发行版中同一对象的请求成功。

问题

有没有人遇到过返回 403 的云端 URL 不能失效的情况?对象不会失效有什么原因吗?

感谢您的帮助!

【问题讨论】:

    标签: amazon-s3 amazon-cloudfront http-status-code-403 invalidation


    【解决方案1】:
    1. 首先检查失效是否在进行中。如果是则等到它完成。
    2. 如果您使用公共 URL 通过 CloudFront 访问 S3 对象,那么您需要对该 S3 对象具有公共读取权限。
    3. 如果您尝试使用签名 URL 通过 CloudFront 访问 S3 对象,请确保生成签名 URL 时提及的时间必须大于当前时间。

    【讨论】:

    • 谢谢 Tej。为了解决您的问题: 1. 无效正在进行中。它成功地完成了。 2. 我确实有公共读取权限。 3. 我试图在没有签名 URL 的情况下访问 CF URL,因为它不再是私有的。
    猜你喜欢
    • 2018-05-28
    • 2021-03-31
    • 2021-04-21
    • 2023-03-21
    • 2019-01-28
    • 1970-01-01
    • 2011-03-18
    • 2013-01-17
    • 2020-08-04
    相关资源
    最近更新 更多