如何在AWS S3上管理用户配置文件pic更新?

时间:2015-12-12 03:40:13

标签: amazon-s3

我正在使用AWS S3在移动应用上保存用户个人资料照片。

如果在用户更新图像时收到请求,我如何保证对这些图片的请求不会导致文件损坏? 请注意,尽管这些文件很小,但移动应用程序上的连接可能会丢失,从而导致上传速度停滞(甚至可能持续数小时)。

我的第一个想法是以临时名称上传新文件,完成后删除原始文件并重命名上传的文件。 我在iOS SDK中找不到任何命令。

另一种方法是只使用文件名递增一个数字,并在完成时始终指向数据库中的新文件。但由于我使用的是非规范化的nosql数据库,因此这会导致严重的问题和不必要的清理复杂性。

任何想法?

1 个答案:

答案 0 :(得分:1)

你担心没问题。

S3上传是原子的。当您在S3上覆盖对象时,没有机会破坏先前对象的下载。该对象在技术上并未被“覆盖” - 它被替换 - 一个很好的区别,但有区别 - 在替换上传成功完成之前,旧对象一无所获。

(事实上,由于S3的覆盖最终一致性模型,在新的上传完成后,很可能不会在短时间内返回上一个对象。

此外,如果您发送带有S3上传的Content-MD5标头,那么上传过程中的失败(停顿,丢失连接,损坏等)将绝对不允许替换对象存储在所有 - S3将中止操作,并且先前版本将保持不变,除非可以针对指定的Content-MD5验证上载的对象。 (SDK应该为您执行此操作。)

请注意,无论是否在存储桶上启用了对象版本控制,都是如此。