AWS S3 - 指定的密钥不存在。 - 对于上传的文件夹

AWS S3 - The specified key does not exist. - for uploaded folders

当我上传一个文件夹到 S3 存储桶(拖放)时,我发现它不被视为一个对象 - 我无法通过它获取它键 (GetObjectAsync()),而 ListObjectsV2Async() 不 return 它(我使用的是 .net sdk)。 当我在存储桶下创建 一个文件夹时,我可以获得它并且它出现在存储桶对象列表中。 这是什么原因?

Amazon S3 没有 'Directory' 或 'Folder' 的概念。

相反,对象的完整路径存储在其键(文件名)中。

例如,一个对象可以存储在 Amazon S3 中,Key 为:invoices/2020-09/inv22.txt

即使 invoices2020-09 目录不存在,也可以创建此对象。当通过 Amazon S3 控制台查看时,它会出现,就好像这些目录是自动创建的一样,但如果对象被删除,这些目录将消失(因为它们从未存在过)。

如果用户单击 Amazon S3 管理控制台中的“创建文件夹”按钮,将创建一个与文件夹 同名的 zero-length 对象。这个 'forces' 即使没有对象 'inside' 文件夹也会出现的文件夹。然而,它实际上并不是一个文件夹。

在指定分隔符 / 的情况下使用 ListObjects 命令时,返回 CommonPrefixes 的列表。这相当于您通常认为的 sub-directory.