J'ai essayé d'invalider des fichiers pour ma distribution Amazon CloudFront afin de supprimer du contenu et j'ai reçu le message d'erreur « TooManyInvalidationsInProgress ».
Brève description
Pour des fichiers individuels, vous pouvez effectuer jusqu'à 3 000 demandes d'invalidation pour chaque distribution.
Si vous dépassez ce quota, un message d'erreur similaire au suivant peut s’afficher :
« An error occurred (TooManyInvalidationsInProgress) when calling the CreateInvalidation operation: Processing your request will cause you to exceed the maximum number of in-progress invalidations. »
Pour résoudre ce problème, utilisez des noms de fichiers à versions gérées ou des caractères génériques, contrôlez la durée du fichier cache ou implémentez un mécanisme de nouvelle tentative avec backoff exponentiel.
Résolution
Utiliser des noms de fichiers à versions gérées
Si vous mettez fréquemment à jour vos fichiers depuis votre distribution, il est recommandé d'utiliser des noms de fichiers à versions gérées. Les fichiers à versions gérées vous permettent de mieux contrôler les fichiers sur-cachés et sont moins coûteux que l'invalidation de fichiers. Pour plus d'informations, consultez la section Choisir entre l’invalidation de fichiers et l’utilisation de noms de fichiers à versions gérées.
Utiliser des caractères génériques
Vous pouvez utiliser des caractères génériques dans le chemin d’invalidation avec un maximum de 15 chemins d'invalidation en cours en même temps, sans quotas de fichiers. Vous devez placer le caractère générique (*) à la fin du chemin d'invalidation, tel que /images/image.jpg*.
Contrôler la durée de mise en cache de fichiers par CloudFront
Vous pouvez modifier la configuration de l'origine ou de la distribution pour spécifier la durée pendant laquelle CloudFront met les objets en cache. Il est recommandé d'utiliser une politique de cache et une politique de demande d'origine pour contrôler la clé de cache et les demandes d'origine.
Si vous n'avez pas besoin de mettre votre contenu en cache, utilisez la politique CachingDisabled pour désactiver la mise en cache. Pour plus d’informations, consultez la section Comment modifier mes configurations afin que CloudFront ne mette pas certains fichiers en cache ?
Implémenter un mécanisme de nouvelle tentative avec backoff exponentiel
Il est recommandé d'intégrer une logique de nouvelle tentative dans vos applications pour réessayer les requêtes qui renvoient une erreur. Tous les kits SDK AWS sont dotés d'un mécanisme de nouvelle tentative intégré avec un algorithme qui utilise le backoff exponentiel. L’algorithme met en œuvre des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives. De nombreux algorithmes de backoff exponentiel utilisent le gigue pour empêcher les collisions successives. Pour plus d'informations, consultez la section Comportement en matière de nouvelle tentative.
Informations connexes
Ce que vous devez savoir lors de l’invalidation de fichiers
Quotas sur les invalidations
CreateInvalidation