2016-06-23 1 views
1

Je souhaite synchroniser un compartiment S3 avec un seul répertoire sur plusieurs instances Windows EC2. Quand un fichier est téléchargé ou supprimé du compartiment, je voudrais qu'il soit immédiatement poussé ou retiré de toutes les instances. De nouvelles instances seront ajoutées/supprimées fréquemment (plusieurs fois par semaine). Les fichiers seront également téléchargés/supprimés fréquemment. La taille des fichiers peut atteindre 2 Go. Quels services ou fonctionnalités AWS peuvent résoudre ce problème?Seau AWS Synchronize S3 avec instance EC2

+1

Vous pouvez utiliser SNS pour modifier un événement sur S3 afin que l'instance synchronise l'objet à partir de s3 - http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html. L'événement/notification SNS connaîtra la modification mais ne pourra pas pousser/propager le fichier sur vos instances, bien que vous puissiez envoyer une notification sur ces instances pour extraire le nouvel objet de s3 –

+0

Merci Frederic, si je devais utiliser les notifications SNS, devrais-je maintenir une liste d'instances pour envoyer des notifications? – PrestonM

+0

Si vous voulez "envoyer" le fichier à toutes vos instances en cours d'exécution de votre compte, vous seriez en mesure de récupérer la liste en utilisant aws API afin que vous n'ayez pas besoin de maintenir la liste –

Répondre

1

D'après ce que vous avez décrit, je proposerais la solution suivante à ce problème.

Vous devez créer un sujet SNS pour les notifications de modification S3. Ensuite, vous avez besoin d'un script qui va s'abonner à ce sujet à partir de vos machines. Ce script mettra à jour les fichiers sur vos machines en fonction des modifications provenant de S3. Il devrait supporter les opérations de base de CRUD.

Exécutez ce script, puis synchronisez le contenu de votre S3 sur votre ordinateur lorsqu'il commence à utiliser aws-cli mentionné ci-dessus.

-1

Edit: Cette réponse suivante consiste à synchroniser EC2 avec S3 Bucket, Source: EC2 & Destination: Godet.

Si elle était pour une seule instance, seul aws cli sync (avec l'option --delete ) aurait été travaillé pour: mettre les fichiers au seau S3 et à supprimer.

Mais le cas est ici pour plusieurs instances, donc si nous utilisons aws s3 sync avec option --delete, il y aurait un problème.

Pour expliquer simplement, considérer instance I1 avec les fichiers A.jpg & b.jpg être synchronisé à godet. Maintenant, un travail CRON a synchronisé les fichiers avec le compartiment S3.

Maintenant, nous avons instance I2 qui a des fichiers C.jpg & d.jpg. Ainsi, lorsque le travail CRON de cette instance fonctionne, il met les fichiers c.jpg & d.jpg et supprime également les fichiers a.jpg & b.jpg, parce que ces fichiers n'existe pas dans l'instance I2.

Donc, pour remédier à ce problème, nous avons deux approches:

  1. Sync tous les fichiers à travers toutes les instances (coûteux et supprime l'objet de S3 au total).
  2. Synchronisez les fichiers sans l'option --delete et implémentez la suppression séparément (en utilisant aws s3 rm).
+2

Je pense que vous avez interprété ma question à l'envers. Les fichiers seraient synchronisés du compartiment ** aux ** instances ec2. – PrestonM

+0

Ah désolé, mon mauvais. En général, les gens ont besoin de l'inverse. –