跳至内容

如何解决 CloudFront 失效请求的“TooManyInvalidationsInProgress”错误?

1 分钟阅读
0

我尝试使我的 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 缓存文件的时间长度

您可以更改来源或分配的配置,以指定 CloudFront 缓存对象的时间长度。最佳做法是使用缓存策略来源请求策略来控制缓存密钥和来源请求。

如果您不需要缓存内容,请使用 CachingDisabled 策略关闭缓存。有关详细信息,请参阅如何更改我的配置,以便 CloudFront 不缓存某些文件?

实施带指数回退的重试机制

最佳做法是在应用程序中构建重试逻辑,以重试返回错误的请求。所有 AWS SDK 都有内置重试机制,其算法使用指数回退功能。此算法会在连续错误响应的两次重试之间实施越来越长的等待时间。许多指数回退算法使用抖动来防止连续冲突。有关详细信息,请参阅重试行为

相关信息

使文件失效时的需知事项

有关失效的配额

CreateInvalidation

AWS 官方已更新 1 年前