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

Lecture de 5 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 fournit 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 (Default TTL (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 les objets Amazon S3

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

Avant d’exécuter ce processus, prenez en compte les points suivants :

  • 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 car le chemin ne correspond pas à 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 distinguent les majuscules des minuscules.
  • Pour supprimer des versions spécifiques d’un objet en fonction d’une chaîne de requête, incluez QueryString dans le chemin d’invalidation.

Les invalidations d’objets prennent généralement entre 10 et 100 secondes. Vous pouvez vérifier l’état d’une invalidation en consultant votre distribution depuis la console CloudFront.

Utiliser la gestion des versions d’objets

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

Utilisez l’une des 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 la clé. Par exemple, si vous mettez à jour /image_v1.png, vous stockez 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 l’objet. 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 cache policy (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’il est disponible dans le cache CloudFront.

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

  • Le stockage des nouvelles versions de l’objet à l’origine (Amazon S3) vous permet d’annuler les modifications apportées aux versions précédentes qui 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.
  • La mise à jour de l’objet à l’origine, mais la mise en cache basée sur la chaîne de requête peut réduire vos coûts de stockage. Toutefois, pour vous préparer à d’éventuelles annulations, il est recommandé de conserver les versions précédentes de l’objet hors ligne.

Remarque : La spécification de noms de fichiers ou de répertoires versionnés n’est pas liée à la gestion des versions des objets Amazon S3. L’utilisation de la fonctionnalité de gestion des versions d’Amazon S3 ne met pas automatiquement à jour le contenu. Vous devez spécifier les chemins de fichiers avec soin, car vous ne pouvez pas annuler une demande d’invalidation une fois que vous en avez lancé une.

Informations connexes

Managing how long content stays in the cache [Gestion de la durée pendant laquelle le contenu reste dans le cache (expiration)]

Query string forwarding and caching (Transfert et mise en cache des chaînes de requête)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an