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
Répondre
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.
Oui, j'ai utilisé la commande aws cli s3 "sync" pour maintenir le contenu d'un serveur local à jour avec les modifications S3. Il permet de synchroniser les fichiers d'un répertoire cible local avec un bucket ou un préfixe. http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
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:
- Sync tous les fichiers à travers toutes les instances (coûteux et supprime l'objet de S3 au total).
- Synchronisez les fichiers sans l'option --delete et implémentez la suppression séparément (en utilisant
aws s3 rm
).
Je pense que vous avez interprété ma question à l'envers. Les fichiers seraient synchronisés du compartiment ** aux ** instances ec2. – PrestonM
Ah désolé, mon mauvais. En général, les gens ont besoin de l'inverse. –
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 –
Merci Frederic, si je devais utiliser les notifications SNS, devrais-je maintenir une liste d'instances pour envoyer des notifications? – PrestonM
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 –