aws s3原子替换文件

Tho*_*ner 26 amazon-s3 amazon-web-services aws-cli

环境

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

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


如何上传和替换(覆盖)的文件在s3://fooname/barname.bin./barname.1.bin

目标:

  • 不要更改用于访问文件的s3 url(新文件也应该可用s3://fooname/barname.bin).
  • 零/最小'停机时间'/ s3链路不可用.

wat*_*oof 34

据我所知,你已经找到了一个现有的文件s3://fooname/barname.bin,你想用一个新文件替换它.要替换它,你应该只在旧的上面上传一个新的: aws s3 cp ./barname.1.bin s3://fooname/barname.bin.

旧文件将被替换.根据S3文档,这是原子的,但由于EC2s复制模式,对密钥的请求可能仍会返回旧文件一段时间.

  • 没有直接关系,但是这种行为确实让我感到惊讶-如果您1)开始进行S3分段上传,2)然后放入文件(简单的PUT而不是分段),3)然后完成分段上传,则分段上传将成功,但是存储桶中的对象是简单PUT中的“较旧”对象。此处提及:docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html – 52分钟前的jamshid编辑 (2认同)
  • 还要注意,尽管从技术上讲替换是原子的,但是如果有人在替换对象的同时进行对象的分段下载(例如,带有默认参数的“ aws s3 cp”),他们可能会从*不同的*接收分段的块该文件的版本。这可能导致下载的文件是两个文件的混合(并且可能非常损坏)。参见例如[此GitHub问题](https://github.com/aws/aws-cli/issues/2321)。 (2认同)