Amazon web services aws s3以原子方式替换文件 环境

Amazon web services aws s3以原子方式替换文件 环境,amazon-web-services,amazon-s3,aws-cli,Amazon Web Services,Amazon S3,Aws Cli,我使用命令aws s3 cp./barname.bin s3://fooname/barname.bin将文件/barname.bin复制到s3 我有一个不同的文件,/barname.1.bin,我想上传它来代替那个文件 如何将s3://fooname/barname.bin中的文件上载并替换(覆盖)为/barname.1.bin 目标: 不要更改用于访问该文件的S3URL(新文件也应位于s3://fooname/barname.bin) 零/最小“停机时间”/s3链路不可用 据我所知

我使用命令
aws s3 cp./barname.bin s3://fooname/barname.bin
将文件
/barname.bin
复制到s3

  • 我有一个不同的文件,
    /barname.1.bin
    ,我想上传它来代替那个文件


  • 如何将
    s3://fooname/barname.bin
    中的文件上载并替换(覆盖)为
    /barname.1.bin

    目标:
    • 不要更改用于访问该文件的S3URL(新文件也应位于
      s3://fooname/barname.bin
    • 零/最小“停机时间”/s3链路不可用

    据我所知,您的现有文件位于
    s3://fooname/barname.bin
    ,您希望将其替换为新文件。要替换它,您只需在旧的基础上上载一个新的:
    aws s3 cp./barname.1.bin s3://fooname/barname.bin

    旧文件将被替换。根据,这是原子的,尽管由于EC2s复制模式,对密钥的请求在一段时间内仍可能返回旧文件


    注意(谢谢@Chris Kuehl):虽然从技术上讲,替换是原子的,但多部分下载可能最终会得到来自不同版本文件的块。类似的问题针对在java中执行此操作:如果将文件发送到现有密钥,则在上载完成后将覆盖该文件。你需要保留旧版本吗?旋转/保存旧文件对我的问题并不重要,但可能与谷歌rs的问题标题的详细内容有关。S3基于最终一致的概念,因为它是一个分布式系统。除非文件非常大,否则复制速度应该非常快(在几秒钟内)。在这个问题上,您对“bazname”子目录的使用似乎不一致。虽然没有直接关系,但这种行为确实让我感到惊讶——如果您1)启动S3多部分上载,2)然后放入一个文件(简单放入而不是多部分),3)然后完成多部分上载,多部分上传将宣布成功,但bucket中的对象是简单PUT中的“旧”对象。这里提到:docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html–jamshid 52分钟前的编辑还注意到,虽然替换在技术上是原子的,但如果有人在替换对象的同时进行对象的多部分下载(例如带有默认参数的aws s3 cp),他们可能会从该文件的不同版本接收多部分块。这可能导致下载的文件是这两个文件的混合体(并且可能非常损坏);见例。