Amazon web services 有人能解释一下吗?

Amazon web services 有人能解释一下吗?,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,供参考: 当我对根bucket执行get请求时,它返回test/和test/subdir/两个0字节。这是正确的,那里应该有2个文件夹。当我将文件上载到test/subdir/file时。根存储桶中有一个项的键为test/subdir/filetest/和test/subdir/仍然是0字节。当我在test/subdir/上执行get请求时,它不返回任何内容 这是怎么回事 注意:我没有访问控制台的权限。格雷格,这一点一开始听起来可能会让人困惑,但事实是AmazonS3中没有“文件夹”这样的东西。

供参考:

当我对根bucket执行get请求时,它返回
test/
test/subdir/
两个0字节。这是正确的,那里应该有2个文件夹。当我将文件上载到
test/subdir/file
时。根存储桶中有一个项的键为test/subdir/file
test/
test/subdir/
仍然是0字节。当我在
test/subdir/
上执行get请求时,它不返回任何内容

这是怎么回事


注意:我没有访问控制台的权限。

格雷格,这一点一开始听起来可能会让人困惑,但事实是AmazonS3中没有“文件夹”这样的东西。我会解释的

S3的数据结构类似于对象的平面列表,而不是树。当您认为在名为
pics
的“文件夹”中有一个名为
puppy.jpg
的“文件”时,您实际拥有的是一个对象哪个键是
pics/puppy.jpg
。请注意,
/
字符并不比
字符或
p
字符更特殊

你可能会想,布鲁诺疯了,我在AWS管理控制台中看到了文件夹。如果是,则可以看到文件夹。但它们实际上是由GUI模拟的

当您通过AWS管理控制台创建文件夹时,它实际要做的是创建一个对象,该对象的名称是“文件夹”的完整路径,后面带有斜杠和0字节。就像您在问题中提到的
test/
对象(不是“文件夹”)和
test/subdir/
对象(不是“文件夹”)一样

为了实际识别和绘制“文件夹”,AWS管理控制台(以及许多其他S3浏览工具)正在使用参数
分隔符
前缀
执行一些API魔术

现在,知道了没有文件夹这一事实,并且通过使用这些0字节的尾随-/对象来模拟它们,应该很容易理解为什么您将
test/
对象视为0字节对象。。。同样的道理可以解释为什么在“文件夹”上执行GET操作时什么也看不到——实际上是下载一个0字节的对象


最后,作为结论,从S3中获取“文件夹”的大小(它们不存在…)并非易事。唯一的方法是列出具有该前缀的所有对象并添加其大小。或者将对象的索引(“文件”和“文件夹”)保存在某种具有更高级查询功能的数据库中。

Greg,起初这听起来可能令人困惑,但事实是Amazon S3中没有“文件夹”这样的东西。我会解释的

S3的数据结构类似于对象的平面列表,而不是树。当您认为在名为
pics
的“文件夹”中有一个名为
puppy.jpg
的“文件”时,您实际拥有的是一个对象哪个键是
pics/puppy.jpg
。请注意,
/
字符并不比
字符或
p
字符更特殊

你可能会想,布鲁诺疯了,我在AWS管理控制台中看到了文件夹。如果是,则可以看到文件夹。但它们实际上是由GUI模拟的

当您通过AWS管理控制台创建文件夹时,它实际要做的是创建一个对象,该对象的名称是“文件夹”的完整路径,后面带有斜杠和0字节。就像您在问题中提到的
test/
对象(不是“文件夹”)和
test/subdir/
对象(不是“文件夹”)一样

为了实际识别和绘制“文件夹”,AWS管理控制台(以及许多其他S3浏览工具)正在使用参数
分隔符
前缀
执行一些API魔术

现在,知道了没有文件夹这一事实,并且通过使用这些0字节的尾随-/对象来模拟它们,应该很容易理解为什么您将
test/
对象视为0字节对象。。。同样的道理可以解释为什么在“文件夹”上执行GET操作时什么也看不到——实际上是下载一个0字节的对象


最后,作为结论,从S3中获取“文件夹”的大小(它们不存在…)并非易事。唯一的方法是列出具有该前缀的所有对象并添加其大小。或者将对象的索引(“文件”和“文件夹”)保存在某种具有更高级查询功能的数据库中。

Greg,起初这听起来可能令人困惑,但事实是Amazon S3中没有“文件夹”这样的东西。我会解释的

S3的数据结构类似于对象的平面列表,而不是树。当您认为在名为
pics
的“文件夹”中有一个名为
puppy.jpg
的“文件”时,您实际拥有的是一个对象哪个键是
pics/puppy.jpg
。请注意,
/
字符并不比
字符或
p
字符更特殊

你可能会想,布鲁诺疯了,我在AWS管理控制台中看到了文件夹。如果是,则可以看到文件夹。但它们实际上是由GUI模拟的

当您通过AWS管理控制台创建文件夹时,它实际要做的是创建一个对象,该对象的名称是“文件夹”的完整路径,后面带有斜杠和0字节。就像您在问题中提到的
test/
对象(不是“文件夹”)和
test/subdir/
对象(不是“文件夹”)一样

为了实际识别和绘制“文件夹”,AWS管理控制台(以及许多其他S3浏览工具)正在使用参数
分隔符
前缀
执行一些API魔术

现在,知道了这样一个事实,即没有文件夹这样的东西,并且通过使用这些0字节的尾随-/对象来模拟它们,应该很容易