Amazon S3避免覆盖具有相同名称的对象

时间:2012-09-29 17:29:32

标签: php file file-upload amazon-s3 amazon-web-services

如果我将文件上传到S3,其文件名与存储桶中对象的文件名相同,则会覆盖该文件。有哪些选项可以避免覆盖具有相同文件名的文件?我在我的桶中启用了版本控制,认为它将解决问题,但对象仍然被覆盖。

3 个答案:

答案 0 :(得分:7)

我上面的评论不起作用。我认为WRITE ACL也适用于对象,但它只适用于存储桶。

由于您启用了版本控制,因此不会覆盖您的对象。但是,如果您未在GET请求或URL中指定版本,则将采用最新版本。这意味着当您将对象放入S3时,您需要保存响应告诉您的versionID,以便检索第一个对象。

有关详情,请参阅Amazon S3 ACL for read-only and write-once access

答案 1 :(得分:3)

您还可以配置具有有限权限的IAM用户。写入仍然是写入(即更新),但无论如何使用IAM用户是最佳做法。

所有者(即您的“长期访问密钥和密钥”)始终具有完全控制权,除非您完全禁止使用它。

答案 2 :(得分:1)

如果您使用数据库存储s3存储桶上每个文件的密钥,这是我的建议。

生成随机密钥。 尝试在具有允许空条目的UNIQUE约束的字段中插入/更新数据库的密钥。 如果失败,则使用密钥,重复此操作直到获得唯一密钥。

然后使用您知道的密钥将文件放在s3上。