那么,我在S3上有以下结构:
mainbucket
- 数据处理/
- 声明/
我们有DataFeeds/
文件夹被删除的事件!因此,我测试了以下内容:
aws s3api put-object --bucket mainbucket --key DataFeeds/.donotdelete
但是,如果我执行这个(删除blah.txt
,即使它不存在)DataFeeds/
文件夹也被删除:
aws s3 rm s3://mainbucket/DataFeeds/blah.txt
那么,我们如何防止在S3
上删除文件夹呢?
版本使用:aws-cli/2.2.46 Python/3.9.7 Darwin/20.6.0 source/x86_64 prompt/off
Amazon S3中不存在文件夹。它是一个"平面"存储服务,对象的Key
(文件名)包含完整路径,包括目录。
Amazon S3将为您"模拟"文件夹。例如,如果您将文件上传到invoices/january.txt
,那么invoices
目录将"神奇地"出现。如果随后删除该对象,则该目录将"消失"。这是因为它从未真正存在过。
如果你使用创建文件夹按钮,它将创建一个与目录名称相同的零长度对象。. 这将"强制"该目录出现在bucket清单中。如果没有具有相同前缀(路径)的对象,删除零长度对象将导致目录消失。
使用S3的最佳建议是假装文件夹存在. 您可以将对象放在任何路径中,然后(假装)目录就会神奇地出现。不要担心目录会消失,因为它们实际上从未存在过!如果你真的需要空目录,使用创建文件夹按钮来创建零长度对象。它会一直存在,直到你删除零长度的对象。