2013-02-21 3 views
-2

J'utilise Amazon S3 en conjonction avec Amazon CloudFront, essentiellement dans mon application J'ai une méthode pour mettre à jour un objet S3, fondamentalement, je reçois l'objet S3 en utilisant CloudFront, je fais une modification aux données et je le ré-uploade sous la même clé - en remplaçant/mettant à jour le fichier/objet.Force mise à jour Amazon CloudFront sur iOS

Cependant, CloudFront ne semble pas se mettre à jour avec S3 (c'est le cas, mais mes utilisateurs n'en disposent pas toute la journée), existe-t-il un moyen de forcer une mise à jour de contenu CloudFront? Apparemment, vous pouvez l'invalider, y a-t-il un moyen de faire un SDK iOS?

Répondre

2

Je ne sais pas s'il existe un moyen de faire une demande d'invalidation CloudFront via le SDK iOS. Vous devrez probablement créer votre propre méthode pour formuler la demande par rapport à l'API AWS.

Je suggérerais cependant que vous adoptiez une autre approche. Les demandes d'invalidation sont des opérations coûteuses (par rapport aux autres coûts de Cloudfront). Vous ne voulez probablement pas laisser à votre utilisateur le soin de lancer un nombre illimité de demandes d'invalidation contre CloudFront via l'application. Vous rencontrerez également des limites au nombre de demandes d'invalidation simultanées que vous pouvez avoir. Votre mieux est d'implémenter un schéma de versionnage de nom de fichier dans lequel vous pouvez changer le nom de fichier d'une manière programmatique pour chaque révision. Vous devez ensuite référencer la nouvelle URL dans Cloudfront à chaque révision, ce qui élimine le besoin d'attendre une actualisation du cache ou d'effectuer une invalidation. Cela entraînera également une disponibilité de réponse plus immédiate pour l'image, car les demandes d'invalidation peuvent prendre du temps à traiter.

S'il vous plaît noter les éléments suivants de la FAQ CloudFront:

Q. Y at-il une limite au nombre de demandes d'invalidation que je peux faire? Il n'y a aucune limite sur le nombre total de fichiers que vous pouvez invalider; Toutefois, chaque demande d'invalidation que vous effectuez peut contenir un maximum de 1 000 fichiers. De plus, vous ne pouvez avoir que 3 demandes d'invalidation en cours à un moment donné. Si vous dépassez cette limite, d'autres demandes d'invalidation recevront une réponse d'erreur jusqu'à la fin de l'une des demandes précédentes. Vous ne devez utiliser l'invalidation que dans des circonstances inattendues. Si vous savez à l'avance que vos fichiers devront être fréquemment supprimés du cache, il est recommandé d'implémenter un système de gestion des versions pour vos fichiers et/ou de définir une courte période d'expiration.

+0

si semble vous changez l'heure d'époque de la date d'expiration comme 1 seconde il expire assez rapidement pour générer une nouvelle URL avec le contenu mis à jour – MCKapur

+0

OK, réglage de sorte que le temps d'époque expirer rapidement ne pas travail. Je ne suis pas si sûr de ce que vous suggérez dans votre réponse, dites-vous que je devrais télécharger un nouvel objet Amazon S3 pour chaque version? Je vais vous donner mon cas, comme Twitter, lorsque vous suivez un utilisateur, les données des utilisateurs doivent être mis à jour avec les données qu'ils vous suivent, donc je devrais télécharger un objet totalement nouveau avec un nom de fichier différent ou une sorte de aspect du nom de clé? Comment puis-je ensuite faire référence à ceci dans CloudFront ou ** savoir ** quel est l'objet le plus récent basé sur la clé? Je ne suis pas très clair sur ce que vous suggérez. – MCKapur

+0

@RohanKapur Je suggère l'utilisation d'un nouvel objet avec un nouveau nom de fichier. Comment vous référencer l'objet est vraiment quelque chose que vous auriez besoin de travailler en fonction de la façon dont votre application fonctionne. Je ne connais pas assez votre application et la façon dont elle interagit avec ces objets pour fournir une grande suggestion ici. Vous pouvez certainement stocker des informations sur la "version" actuelle dans le client. Si ce n'est pas vraiment un contenu statique, mais plutôt un contenu qui changera fréquemment, S3/Cloudfront n'est peut-être pas un support de stockage approprié. –

Questions connexes