AWS将S3存储桶与EC2实例同步

3

我想要将一个S3存储桶与多个Windows EC2实例上的单个目录同步。当有文件上传或删除时,我希望它能立即在所有实例上推送或删除。新实例会频繁添加/删除(每周多次)。文件也会频繁上传/删除。文件大小可能达到2GB。AWS有哪些服务或功能可以解决这个问题?


1
你可以利用SNS使S3上的事件发生变化,以便实例将同步来自S3的对象 - http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html。 SNS事件/通知将了解更改,但无法推送/传播文件到您的实例,尽管您可以在这些实例上发送通知以从S3拉取新对象。 - Frederic Henri
谢谢Frederic,如果我想使用SNS通知,我是否需要维护一个实例列表以发送通知? - Preston Martin
如果您想将文件“发送”到您帐户中的所有运行实例,则可以使用AWS API检索列表,因此无需维护列表。 - Frederic Henri
3个回答

2
根据您的描述,我建议针对这个问题使用以下解决方案。
您需要为S3更改通知创建一个SNS主题。然后,您需要编写一个脚本从您的机器订阅此主题。该脚本将根据来自S3的更改更新您机器上的文件。它应支持基本的CRUD操作。
在使用上述提到的aws-cli启动时运行此脚本,然后同步您的S3内容到您的机器。

0

-1

编辑:以下答案是将EC2与S3 Bucket同步,源:EC2&目标:Bucket。

如果只针对一个实例,则只需使用aws cli sync(带有--delete选项)即可同时将文件放入S3存储桶并删除。

但是这里的情况是针对多个实例,因此如果我们使用aws s3 sync--delete选项,就会出现问题。

简单地解释一下,考虑实例I1,其中包含要与Bucket同步的文件a.jpgb.jpg。现在,CRON作业已将文件与S3存储桶同步。

现在我们有实例I2,其中包含文件c.jpgd.jpg。 因此,当此实例的CRON作业运行时,它会放置文件c.jpgd.jpg,并删除文件a.jpgb.jpg,因为这些文件不存在于实例I2中。

因此,为了纠正问题,我们有两种方法:

  1. 同步所有实例中的所有文件(成本高昂,完全删除S3的目的)。
  2. 同步文件而不使用--delete选项,并单独实现删除(使用aws s3 rm)。

2
我认为你误解了我的问题。文件将从存储桶同步到 EC2 实例。 - Preston Martin
啊,抱歉,是我不好。通常人们需要相反的方式。 - Deepak Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接