1
votes

Comment le contrôle de version fonctionne-t-il sur Amazon Cloudfront?

Je viens de configurer un site Web statique sur Amazon S3. J'utilise également le service CDN Cloudfront.

Selon Amazon, il existe 2 méthodes disponibles pour vider le cache Cloudfront: l'invalidation et le contrôle de version. Ma question concerne ce dernier.

Prenons l'exemple suivant:

Je crée un lien vers un fichier image ( image.jpg ) depuis mon fichier index.html . Je décide alors de remplacer l'image. Je télécharge une deuxième image avec le nom de fichier: image_2.jpg et change le lien dans mon fichier index.html .

Les modifications prendront-elles automatiquement effet ou une action supplémentaire est-elle nécessaire?

Qu'est-ce qui déclenche les modifications nécessaires si les fichiers modifiés et nouvellement téléchargés se trouvent dans le bucket et non dans le cache?


0 commentaires

3 Réponses :


1
votes

Votre configuration cloudfront a un cache TTL, qui vous indique quand le fichier sera mis à jour, quel que soit le moment où la source change.

Si vous avez besoin d'une mise à jour immédiate, utilisez la fonction d'invalidation de votre fichier index.html


2 commentaires

Ok, mais je pensais que le contrôle de version était une alternative à l'invalidation, sinon cela ne fait aucune différence que vous utilisiez le contrôle de version ou que vous téléchargiez simplement un nouveau fichier sans aucune référence de version dans le nom de fichier.


la gestion des versions ou les dossiers ont un sens lorsque vous référencez votre ressource cloudfront ailleurs, où vous pouvez spécifier la version.



0
votes

La gestion des versions dans CloudFront n'est rien de plus que l'ajout (ou le préfixage) d'une version dans le nom de l'objet ou du «dossier» dans lequel les objets sont stockés.

  • tous les objets d'un dossier v1 et utilisez une URL telle que https://xxx.cloudfront.net/v1/image.png
  • tous les objets contiennent une version dans leur nom comme image_v1.png et utilisent une URL comme https://xxx.cloudfront.net/image_v1.png

La deuxième option est souvent un peu plus de travail mais alors vous n'avez pas besoin de télécharger de nouveaux fichiers qui ne nécessitent pas d'être mis à jour (= moins cher dans le contexte du stockage). La première solution est souvent plus claire et nécessite moins de travail.

L'utilisation de CloudFront Versioning nécessite plus de stockage S3, mais est souvent moins chère que la création de nombreuses invalidations.

L'autre façon d'invalider le cache est de créer des invalidations (cela peut être coûteux). Si vous n'avez pas vraiment besoin d'invalidations mais que vous avez simplement besoin d'actualisations plus rapides du cache (24h par défaut), vous pouvez mettre à jour les paramètres TTL d'origine (niveau d'origine) ou définir la durée du cache pour un objet individuel (niveau objet).


0 commentaires

0
votes

J'interviendrai au cas où quelqu'un d'autre viendrait chercher ce que j'ai fait. Vous pouvez configurer Cloudfront avec le contrôle de version S3 activé et référencer des versions S3 spécifiques si vous savez de quelle version vous avez besoin. Je l'ai mis derrière une URL Cloudfront prédéfinie et j'ai fini avec ceci dans le SDK Java:

    S3Properties s3Properties... // Custom properties pulled from a config file
    String cloudfrontUrl = "https://" + s3Properties.getCloudfrontDomain() + "/" + 
            documentS3Key + "?versionId=" + documentS3VersionId;

    URL cloudfrontSignedUrl = new URL(CloudFrontUrlSigner.getSignedURLWithCannedPolicy(
            cloudfrontUrl,
            s3Properties.getCloudfrontKeypairId(),
            SignerUtils.loadPrivateKey(s3Properties.getCloudfrontKeyfilePath()),
            getPresignedUrlExpiration()));


0 commentaires