AWS S3:如何在删除最后一个文件后维护空目录结构



对于适用于 Java 的 AWS 开发工具包库(由cognitect-labs/aws-api使用(,如果我删除"目录"中的最后一个对象,我希望留下一个空目录。

https://aws.amazon.com/sdk-for-java/https://github.com/cognitect-labs/aws-api

相反,DeleteObject 也会删除目录(不是我想要的(。有没有办法避免这种情况? https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html

(require '[cognitect.aws.client.api :as aws])
;; Copying works fine
(aws/invoke aws/client
{:op :CopyObject
:request {:Bucket "bucket"
:CopySource "bucket/dirA/f1"
:Key "dirB/f1"}})
;; However, deleting removes f1 and dirA (if dirA is empty)
(aws/invoke aws/client
{:op :DeleteObject
:request {:Bucket "bucket"
:Key "dirA/f1"}})

这是不可能的,因为您在 S3 中看到的文件夹并不是真正的文件夹。它被组织为文件夹,以便于使用。但它不是真正的文件夹。

S3 足够聪明,知道何时使用对象创建文件夹。因此,当对象被删除时,文件夹也会被删除。否则,您将有空文件夹在存储桶中晃来晃去。

但是 - 当我对此进行测试时,我发现如果您在创建文件夹中的对象之前单独创建文件夹,DeleteObject保留空文件夹。DeleteObjects的情况并非如此.

最新更新