【问题标题】:AWS Synchronize S3 bucket with EC2 instanceAWS 将 S3 存储桶与 EC2 实例同步
【发布时间】:2016-07-08 11:03:38
【问题描述】:

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

【问题讨论】:

  • 您可以使用 SNS 在 S3 更改上进行事件,以便实例将同步来自 s3 - docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html 的对象。 SNS 事件/通知将知道更改,但无法在您的实例上推送/传播文件,尽管您可以在这些实例上发送通知以从 s3 中提取新对象
  • 谢谢 Frederic,如果我要使用 SNS 通知,我是否必须维护一个实例列表以向其发送通知?
  • 如果您想将文件从您的账户“发送”到所有正在运行的实例,您可以使用 aws API 检索该列表,因此您无需维护该列表

标签: amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

根据您的描述,我会针对此问题提出以下解决方案。

您需要为S3 更改通知创建一个SNS 主题。然后你需要一个脚本来从你的机器上订阅这个主题。此脚本将根据来自S3 的更改更新您机器上的文件。它应该支持基本的 CRUD 操作。

运行此脚本,然后在您的机器开始使用上述aws-cli 时将S3 的内容同步到您的机器。

【讨论】:

    【解决方案2】:

    是的,我已使用 aws cli s3“同步”命令来保持本地服务器的内容随 S3 更改而更新。它允许本地目标目录的文件与存储桶或前缀同步。 http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

    【讨论】:

      【解决方案3】:

      编辑:以下答案是将 EC2 与 S3 存储桶同步,源:EC2 和目标:存储桶。

      如果只针对一个实例,那么只有 aws cli sync(带有 --delete 选项)对两者都有效:将文件放入 S3 存储桶和删除。

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

      为了简单地解释它,考虑将带有文件 a.jpgb.jpg 的实例 I1 同步到 Bucket。 现在,CRON 作业已将文件与 S3 存储桶同步。

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

      所以要解决这个问题,我们有两种方法:

      1. 在所有实例中同步所有文件(代价高昂并且完全消除了 S3 的用途)。
      2. 不带--delete选项同步文件,单独实现删除(使用aws s3 rm)。

      【讨论】:

      • 我想你是倒着解释我的问题。文件将从存储桶同步到 ec2 实例。
      • 对不起,我的错。通常人们需要相反的方式。
      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2016-01-22
      • 2020-07-24
      • 2017-05-20
      相关资源
      最近更新 更多