如何确保EC2 - > S3 Sync变得(几乎)原子?

时间:2016-04-20 13:22:14

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

如果我运行EC2竞价型实例,则可以随时终止此实例。要保存日期,请同步整个directory A (which contains file B and C)并通过file D单独aws s3 sync

如果某个实例在aws sync s3

期间被中断,会发生什么?

我想避免目录A及其内容上传的情况,但我的单独file D不是由于aws s3 sync期间的关闭造成的。或者目录A部分同步。

确保S3上的目录/文件集{A,B,C,D}始终指向当前状态或始终指向先前状态最简单的解决方案是什么?

所以我有一些问题:

  • 有没有办法让aws s3 sync automic ,所以如果在S3同步期间发生关机,S3上的所有文件都会保持同步之前的状态。

  • 每个文件是aws s3 sync原子?例如。假设它正在上传文件B,并且此同步过程被终止。 S3上的文件B现在是(a)可能已损坏还是(b)它是否包含旧状态?

  • 还有其他可能性:例如AWS始终在终止之前完成同步,如果实例正在终止,则不接受新的同步请求。

如果第一个选项不可用,但第二个选项是,那么选项是TAR所有文件,然后同步。然而,这增加了一些额外的复杂性,因为当我启动一个新实例并从S3下载时,我需要在文件系统上播放TAR。

如果所有这些都没有帮助,那么可能(以及如何):

  • 将我的根目录E(包含{A,B,C,D})复制(原子)S3到Etmp
  • 运行同步
  • 删除Etmp(原子地)

然后我可以在实例启动时做:

  • 如果存在Etmp,请将此视为稳定状态。用Etmp取代E.

如果通过CLI工具无法做到这一点,例如, Java S3 SDK 提供“提交”多个文件上传的服务?如果是这样,因为那时我写了我的自定义文件syncer。

由于

1 个答案:

答案 0 :(得分:0)

我可以监控Spot Termination Notifications,这让我有2分钟的时间来同步数据。