AWS:仅为S3存储桶附加模式

时间:2012-06-30 18:43:52

标签: amazon-s3 amazon-web-services

上下文

我想让一台机器将文件dump.rdb上传到s3 / blahblahblah / YEAR-MONTH-DAY-HOUR.rdb。

因此,我需要这台机器能够将新文件上传到S3。

但是,我不希望这台机器能够(1)删除现有文件或(2)覆盖现有文件。

从某种意义上说,它只能“附加” - 它只能添加新对象。

问题:

有没有办法像这样配置S3设置?

谢谢!

3 个答案:

答案 0 :(得分:4)

我还不能评论,所以这里是对@Viccari答案的改进......

答案是误导性的,因为它只在你的要求中解决#1,而不是#2。实际上,尽管您可以启用版本控制,但似乎可以 来防止使用任一方法覆盖现有文件。见这里:Amazon S3 ACL for read-only and write-once access

因为您在文件名中添加了时间戳,所以您或多或少地解决了该问题。 (对于编码文件名中每个文件的"版本"的其他方案也是如此:时间戳,UUID,哈希值。)但请注意,您并未受到真正的保护。您的代码中的错误或同一小时的两次上传会导致覆盖文件。

答案 1 :(得分:2)

是的,有可能。
有两种方法可以为存储桶及其内容添加权限:存储分区策略存储分区ACL 。您可以使用存储桶策略实现所需的功能。另一方面,Bucket ACL不允许您在不给予“删除”权限的情况下给予“创建”权限。

1-Bucket政策:
您可以创建存储桶策略(请参阅一些常见示例here),例如,允许特定IP地址具有特定权限。
例如,您可以允许:s3:PutObject而不允许s3:DeleteObject 有关存储桶策略中的S3操作的更多信息,请参见here

2-Bucket ACL:
使用Bucket ACL,您只能提供完整的“写入”权限,即如果给定用户能够添加文件,他也可以删除文件。

答案 2 :(得分:0)

这是不可能的! S3是键/值存储,因此固有地不支持追加。 S3的PUT / cp命令始终可以覆盖文件。通过在您的存储分区上启用版本控制,您仍然可以安全地使用上传文件的帐户受到损害。