Pourquoi CloudFront diffuse-t-il du contenu obsolète à partir d'Amazon S3 ?

Dernière mise à jour : 27/06/2022

J'utilise Amazon CloudFront pour diffuser des objets stockés dans Amazon Simple Storage Service (Amazon S3). J'ai mis mes objets à jour dans Amazon S3, mais ma distribution CloudFront diffuse toujours les versions précédentes de ces fichiers. Pourquoi mon contenu Amazon S3 ne se met-il pas à jour sur CloudFront ? Comment puis-je corriger ce problème ?

Brève description

Par défaut, CloudFront met en cache une réponse d'Amazon S3 pendant 24 heures (durée de vie par défaut de 86 400 secondes). Si votre requête arrive à l'emplacement périphérique qui a diffusé la réponse Amazon S3 sous 24 heures, CloudFront utilise la réponse mise en cache. Il le fait même si vous avez mis à jour le contenu dans Amazon S3.

Utilisez l'une des méthodes suivantes pour envoyer le contenu Amazon S3 mis à jour à partir de CloudFront :

Résolution

Invalider les objets Amazon S3

Vous pouvez invalider un objet Amazon S3 pour le supprimer du cache de distribution de CloudFront. Une fois l'objet retiré du cache, toute requête ultérieure récupère l'objet directement depuis Amazon S3.

Avant d'exécuter ce processus, tenez compte des points suivants :

  • Vous ne pouvez pas invalider certaines versions d'un objet qui utilise des cookies ou des en-têtes pour varier la réponse. CloudFront annule toutes les versions de l'objet dans le cas présent.
  • Le nombre de chemins d'invalidation pour chaque compte AWS est de 1 000 par mois. Pour connaître le prix par chemin d'invalidation plus un nombre supérieur à 1 000 chemins d'invalidation par mois, consultez la section Requêtes d'invalidation dans Tarification Amazon CloudFront.

Lorsque vous créez une invalidation, assurez-vous que les chemins d'objet répondent aux exigences suivantes :

  • Les chemins d'objet doivent être des objets individuels ou les chemins d'accès doit se terminer par le caractère générique (*). Par exemple, vous ne pouvez pas exécuter une invalidation sur un chemin d'accès tel que /images/*.jpeg, car le chemin n'est pas dédié à un objet individuel et ne se termine pas par un caractère générique.
  • Le chemin spécifié doit respecter avec exactitude la casse du chemin de l'objet. Les requêtes d'invalidation sont sensibles à la casse.
  • Pour supprimer des versions spécifiques d'un objet basé sur une chaîne de requête, incluez QueryString dans le chemin d'invalidation.

Les processus d'invalidation d'objet prennent généralement 10 à 100 secondes. Vous pouvez vérifier le statut d'une invalidation en affichant votre distribution depuis la console CloudFront.

Utiliser la gestion des versions des objets

Si vous mettez souvent du contenu à jour, utilisez la gestion des versions des objets pour nettoyer le cache de la distribution CloudFront. Si vous actualisez fréquemment le cache, utilisez la gestion des versions des objets plutôt que les invalidations, car cela peut être plus économique.

Utilisez l'une de méthodes suivantes pour ajouter la gestion des versions à vos objets :

  • Stockez les nouvelles versions de l'objet à l'origine avec le numéro de version dans le nom de clé. Par exemple, si vous mettez à jour /image_v1.png, vous stockez une nouvelle version de l'objet sous /image_v2.png.
  • Mettez à jour l'objet à l'origine, mais mettez en cache sur la base d'une chaîne de requête avec la version de l'objet. Par exemple, la chaîne de requête est mise à jour de /image.png?ver=1 à /image.png?ver=2. Vous pouvez utiliser une stratégie de cache pour spécifier les chaînes de requête qui seront incluses dans la clé de cache et les demandes d'origine.
    Remarque : vous pouvez toujours demander la version précédente (/image.png?ver=1) tant qu'elle est disponible dans le cache CloudFront.

Prenez en compte les avantages et inconvénients suivants de chaque méthode de gestion des versions des objets :

  • Le stockage de nouvelles versions de l'objet à l'origine (Amazon S3) vous permet d'annuler les modifications, car les versions précédentes sont toujours disponibles sous les noms précédents. Toutefois, le stockage de plusieurs versions d'un objet peut augmenter vos coûts de stockage.
  • Mettre à jour l'objet à l'origine, mais tout en mettant en cache en fonction de la chaîne de requête peut réduire vos coûts de stockage. Cependant, pour se préparer aux restaurations, il est recommandé de garder hors ligne les versions d'objet précédentes.

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?