Amazon web services 如何确保EC2->;S3同步变得(几乎)原子化?

Amazon web services 如何确保EC2->;S3同步变得(几乎)原子化?,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,如果我运行一个EC2 Spot实例,这个实例可以随时终止。为了保存日期,我同步整个目录A(其中包含文件B和C),并通过aws s3 sync分离文件D 如果在aws同步s3过程中实例被中断,会发生什么情况? 我想避免目录A及其内容被上传的情况,但我的单独文件D不是由于aws s3同步期间的关机而导致的。或者目录A部分同步 确保S3上的dir/fileset{A,B,C,D}始终指向当前状态或始终指向前一状态的最简单解决方案是什么? 所以我有一些问题: 是否有办法使aws s3同步自动,因此,如

如果我运行一个EC2 Spot实例,这个实例可以随时终止。为了保存日期,我同步整个
目录A(其中包含文件B和C)
,并通过
aws s3 sync
分离
文件D

如果在
aws同步s3
过程中实例被中断,会发生什么情况?

我想避免目录A及其内容被上传的情况,但我的单独
文件D
不是由于
aws s3同步期间的关机而导致的。或者目录A部分同步

确保S3上的dir/fileset{A,B,C,D}始终指向当前状态或始终指向前一状态的最简单解决方案是什么?

所以我有一些问题:

  • 是否有办法使aws s3同步
自动,因此,如果在s3同步期间发生关机,s3上的所有文件将保持同步前的状态

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

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

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

    如果所有这些都没有帮助,是否可以(是的,如何):

    • 将S3我的根目录E(包含{A,B,C,D})复制(原子地)到Etmp
    • 运行同步
    • 移除Etmp(原子性)
    然后我可以在实例启动时执行以下操作:

      如果存在Etmp,将其视为稳定状态。用Etmp代替E
    如果无法通过CLI工具实现,例如Java S3 SDK是否提供“提交”多个文件上载的服务?如果是这样的话,因为我编写了自定义文件同步器


    谢谢

    我可以监控现场终止通知,这给了我2分钟的时间同步数据