跳至內容

我該如何解決 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 官方已更新 3 個月前