Passer au contenu

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

Lecture de 4 minute(s)
0

J’utilise Amazon CloudFront pour diffuser des objets stockés dans Amazon Simple Storage Service (Amazon S3). J’ai mis à jour mes objets dans Amazon S3, mais ma distribution CloudFront diffuse toujours les versions précédentes de ces fichiers.

Brève description

Par défaut, CloudFront met en cache une réponse provenant d’Amazon S3 pendant 24 heures (TTL par défaut de 86 400 secondes). Si votre demande parvient à un emplacement périphérique qui a fourni la réponse Amazon S3 dans les 24 heures, CloudFront utilise la réponse mise en cache. Cela se produit même si vous avez mis à jour le contenu dans Amazon S3.

Utilisez l’une des méthodes suivantes pour diffuser le contenu Amazon S3 mis à jour depuis CloudFront :

Résolution

Invalider des objets Amazon S3

Vous pouvez invalider un objet Amazon S3 pour le supprimer du cache de la distribution CloudFront. Après avoir supprimé l’objet du cache, la requête suivante récupère l’objet directement depuis Amazon S3.

Remarque :

  • Vous ne pouvez pas invalider des versions spécifiques d’un objet qui utilise des cookies ou des en-têtes pour modifier la réponse. CloudFront invalide toutes les versions de l’objet dans ce cas.
  • Chaque compte AWS est autorisé à accéder à 1 000 chemins d’invalidation gratuits par mois. Pour plus d’informations, consultez la Amazon CloudFront pricing (tarification d’Amazon CloudFront).

Lorsque vous créez une invalidation, assurez-vous que les chemins d’accès aux objets répondent aux exigences suivantes :

  • Les chemins des objets doivent correspondre à des objets individuels ou ils doivent se terminer par le caractère générique (*). Par exemple, vous ne pouvez pas exécuter d'invalidation sur un chemin similaire à /images/*.jpeg. En effet, le chemin n'est pas destiné à un objet individuel et ne se termine pas par un caractère générique.
  • Le chemin spécifié doit correspondre exactement à la mise en majuscules du chemin de l’objet. Les demandes d’invalidation sont sensibles à la casse.
  • Pour supprimer des versions spécifiques d’un objet en fonction d’une chaîne de requête, incluez des paramètres de chaîne de requête dans le chemin d’invalidation.

L'invalidation d'un objet prend généralement 10 à 100 secondes. Pour vérifier l’état d’une invalidation, consultez votre distribution depuis la console CloudFront.

Utiliser la gestion des versions de fichiers

Si vous mettez fréquemment à jour du contenu, il est recommandé d’utiliser la gestion des versions de fichiers pour vider le cache de la distribution CloudFront. Pour les actualisations fréquentes du cache, la gestion des versions de fichiers peut être moins coûteuse que l'invalidation.

Pour utiliser la gestion des versions de fichiers, procédez comme suit :

  • Stockez les nouvelles versions de l’objet à l’origine avec le numéro de version dans le nom de la clé. Par exemple, si vous mettez à jour /image_v1.png et stockez ensuite une nouvelle version de l’objet sous le nom /image_v2.png.
  • Mettez à jour l’objet à l’origine mais mettez-le en cache en fonction d’une chaîne de requête avec la version de fichier. Par exemple, la chaîne de requête est mise à jour depuis /image.png?ver=1 vers /image.png?ver=2. Vous pouvez utiliser une politique 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’il est disponible dans le cache CloudFront.

Tenez compte des avantages et inconvénients suivants pour chaque méthode de gestion des versions de fichiers :

  • Vous pouvez stocker de nouvelles versions de l’objet à l’origine pour annuler les modifications apportées aux versions précédentes qui sont toujours disponibles sous les noms précédents. Toutefois, si vous stockez plusieurs versions d'un objet, vos coûts de stockage peuvent augmenter.
  • Les mises à jour de l’objet à l’origine et la mise en cache basée sur la chaîne de requête peuvent réduire vos coûts de stockage. Pour vous préparer à d’éventuelles annulations, il est recommandé de conserver les versions précédentes du fichier hors ligne.

Remarque : Les noms de fichiers versionnés ou de répertoires spécifiés ne sont pas liés à la gestion des versions S3. La gestion des versions S3 ne met pas automatiquement à jour le contenu. Assurez-vous de spécifier correctement les chemins de fichiers, car vous ne pouvez pas annuler une demande d'invalidation une fois qu'elle a été lancée.

Informations connexes

Gérer la durée de conservation de contenu dans le cache (expiration)

Transfert et mise en cache des chaînes de requête

AWS OFFICIELA mis à jour il y a un an