我尝试使我的 Amazon CloudFront 分配的文件失效以删除内容,但收到了“TooManyInvalidationsInProgress”错误。
对于单个文件,您最多可以为每个分配提出 3,000 个失效请求。
如果您超过了此配额,则会收到类似于以下内容的错误消息:
“An error occurred (TooManyInvalidationsInProgress) when calling the CreateInvalidation operation: Processing your request will cause you to exceed the maximum number of in-progress invalidations.”
要解决此问题,请使用版本控制的文件名或通配符,控制缓存文件时间,或实施带指数回退的重试机制。
如果您经常更新分配中的文件,则最佳做法是使用版本控制的文件名。版本控制文件可以让您更好地控制过度缓存的文件,且其成本低于文件失效处理。有关详细信息,请参阅在使文件失效和使用版本控制的文件名之间进行选择。
您可以在无文件配额的情况下在失效路径中使用通配符,最多可同时使用 15 个失效路径。必须将通配符 (*) 放在失效路径的末尾,例如 /images/image.jpg*。
您可以更改来源或分配的配置,以指定 CloudFront 缓存对象的时间长度。最佳做法是使用缓存策略和来源请求策略来控制缓存密钥和来源请求。
如果您不需要缓存内容,请使用 CachingDisabled 策略关闭缓存。有关详细信息,请参阅如何更改我的配置,以便 CloudFront 不缓存某些文件?
最佳做法是在应用程序中构建重试逻辑,以重试返回错误的请求。所有 AWS SDK 都有内置重试机制,其算法使用指数回退功能。此算法会在连续错误响应的两次重试之间实施越来越长的等待时间。许多指数回退算法使用抖动来防止连续冲突。有关详细信息,请参阅重试行为。
使文件失效时的需知事项
有关失效的配额
CreateInvalidation
rePost Polyglot
已提问 3 年前
caesar
Tim
已发布 2 年前