2009-07-06 21 views
14

Existe-t-il un moyen de mettre à jour les fichiers stockés sur Amazon CloudFront (service CDN d'Amazon)? On dirait qu'il ne prendra pas de mise à jour d'un fichier que nous faisons (par exemple supprimer le fichier et stocker le nouveau avec le même nom de fichier que précédemment). Dois-je explicitement déclencher un processus de mise à jour pour supprimer les fichiers des serveurs de périphérie afin de publier le nouveau contenu du fichier?Comment puis-je mettre à jour des fichiers sur le CDN d'Amazon (CloudFront)?

Merci pour votre aide

+0

Essayez de poser cette question à l'adresse http://serverfault.com/. –

Répondre

12

Amazon a ajouté une fonction de Invalidation. .

Demande d'échantillon de l'API Référence:

POST /2010-08-01/distribution/[distribution ID]/invalidation HTTP/1.0 
Host: cloudfront.amazonaws.com 
Authorization: [AWS authentication string] 
Content-Type: text/xml 

<InvalidationBatch> 
    <Path>/image1.jpg</Path> 
    <Path>/image2.jpg</Path> 
    <Path>/videos/movie.flv</Path> 
    <CallerReference>my-batch</CallerReference> 
</InvalidationBatch> 
1

Je me souviens avoir vu cela sur serverfault déjà, mais voici la réponse:

par « Amazon CDN » Je suppose que vous parlez « CloudFront »?

Il est mis en cache, donc si vous avez besoin qu'il soit mis à jour maintenant (par opposition à "la nouvelle version sera visible dans 24 heures"), vous devrez choisir un nouveau nom. Au lieu de "logo.png", utilisez "logo.png - 0", puis mettez-le à jour en utilisant "logo.png - 1", et changez votre code HTML pour qu'il en soit ainsi.

Il n'y a aucun moyen de "vider" amazon cloudfront.

Modifier: Cette était pas possible, c'est maintenant. Voir les commentaires sur cette réponse.

+3

Ce n'est plus précis. – ceejayoz

+0

Voir http://stackoverflow.com/questions/1268158/force-cloudfront-distribution-file-update – RSG

+0

Ce n'est pas vrai, vous pouvez mettre à jour un contenu en annulant le cache – rsabir

2
+0

Où spécifier cela? –

+0

Vous pouvez définir la durée de vie sur les détails de distribution cloudfront, sous l'onglet "Behaviors". Activer "Object Caching" = "Personnaliser" et vous devriez être en mesure de définir les valeurs par défaut pour la distribution. La durée de vie courte est bonne pendant le développement actif, mais la durée devrait être allongée s'il n'y a pas beaucoup de mises à jour. – Cody

1

En ruby, en utilisant la pierre de brouillard

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID'] 
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY'] 
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID'] 

conn = Fog::CDN.new(
    :provider => 'AWS', 
    :aws_access_key_id => AWS_ACCESS_KEY, 
    :aws_secret_access_key => AWS_SECRET_KEY 
) 

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg'] 

conn.post_invalidation AWS_DISTRIBUTION_ID, images 

même sur infirmation, il Il faut encore 5-10 minutes pour que l'invalidation soit traitée et rafraîchie sur tous les serveurs Edge d'Amazon

13

Voici comment je le fais en utilisant le panneau de contrôle CloudFront.

  1. Sélectionnez CloudFront dans la liste des services.
  2. Assurez-vous que Distributions en partant du haut à gauche est sélectionné.
  3. Cliquez ensuite sur le lien de la distribution associée dans la liste (sous ID).

enter image description here

  1. Sélectionnez l'onglet Invalidations.
  2. Cliquez sur le bouton Create Invalidation et entrez l'emplacement des fichiers que vous souhaitez invalider (mis à jour).

Par exemple:

enter image description here

  1. Ensuite, cliquez sur le bouton Invalider et vous devriez maintenant voir InProgress sous statut.

enter image description here

Il faut généralement 10 à 15 minutes pour compléter votre demande infirmation, en fonction de la taille de votre demande.

Une fois qu'il est dit terminé, vous êtes prêt à partir.

Astuce: Une fois que vous avez créé quelques invalidations si vous revenez et ont besoin d'invalider les mêmes fichiers utilisent la boîte de sélection et le Copier le lien deviendront disponibles ce qui rend encore plus rapide.

+1

Remarque: Vous devez invalider les fichiers mis en cache avant de télécharger les nouveaux fichiers. J'avais du mal à faire sortir les fichiers mis à jour quand je téléchargerais la révision, puis invalider l'ancien cache. – Cody

+1

J'ai effectivement trouvé le contraire, je veille à télécharger mon nouveau fichier, puis exécutez l'invalidation. – CoalaWeb