如何使用AWS CLI在S3上创建"类文件夹"(即PREFIX)对象?

Caw*_*b07 5 amazon-s3 amazon-web-services aws-cli

通常会解释S3上没有文件夹/目录,这是真的,但是有PREFIX对象.在某些情况下 - 例如使用riofs将文件系统"挂载"到S3 - 知道如何创建其中一个实际上很有用.

有没有人知道使用AWS CLI是否有"正确"的方法来做到这一点?可能使用低级APIaws s3api ...

相关SO帖子:

Amazon S3 boto - 如何创建文件夹?

通过s3cmd创建文件夹(Amazon S3)

PS

我还想指出,在AWS控制台中,此操作实际上名为"创建文件夹...",因此告诉人们S3上没有文件夹的"概念"并不公平.

非常感谢!

Caw*_*b07 18

经过一番快速摆弄后,我发现这似乎有效:

aws s3api put-object --bucket test --key dir-test/

但它只有在参数末尾包含"/"时才有效--key.那部分感觉不对......当然有更好的方法吗?


gar*_*aat 9

确实,S3中确实没有目录.但是,正如您所指出的,有前缀和分隔符,默认分隔符/允许您在S3存储桶中获得非常有说服力的模拟分层目录结构.

但是桶仍然只是一个包含关键名称对象的平面空间.如果要创建目录,则必须使用名称包含或以分隔符结尾的键创建对象(/默认情况下).所以你上面描述的技术可能感觉不对,但这是唯一的方法.

谁在控制台中想出了创建文件夹的想法应该为自己感到羞耻.它引起了很多困惑.

  • 从技术上讲,这是真的,但大多数客户可能不关心底层存储机制是什么,它不是文件系统.s3 _is_是一种URI方案,最初是作为分层子目录的抽象创建的.谁在乎这些不是真正的文件夹/目录.他们_look_喜欢文件夹,他们_smell_喜欢文件夹.当他们解释说他们不是文件夹时,期望顾客不要入睡,这只是一种迂腐. (2认同)