使用 AWS SDK(Node.js)在 AWS S3 中创建一个空文件夹

12

我正在尝试在aws s3中创建一个文件夹。我成功地创建了一个文件夹,但它不是空的

const Obj = new AWS.S3().putObject({
 
  Key: `/`, //the file you should put inside the folder
  Bucket: `${bucketName}/${req.body.modpack}`, // main bucket/folder I want to create
});

如果我移除"key",我会收到一个错误提示,强制我必须添加它。


正如答案中所指出的,您无法在S3中创建空的“文件夹”。 - Chris
也没有必要创建“空的”文件夹。只需将文件添加到任何路径/关键字中,上传后就会在那里找到它。 - peter n
3个回答

24
在 Amazon S3 中,桶(bucket)和对象(object)是主要的资源,对象存储在桶(bucket)中。Amazon S3 采用扁平结构,而不是像文件系统中看到的层次结构。但是,为了组织简单起见,Amazon S3 控制台支持文件夹概念作为一种对象分组方式。Amazon S3 实现这一点是通过对对象使用共享名称前缀(即,对象具有以相同字符串开头的名称)来实现的。对象名称也称为键名(key names)。
此外,S3 不是您典型的文件系统。它是一个对象存储(Object Store)。它有“桶(bucket)”和“对象(object)”。桶(bucket)用于存储对象,而对象包括数据(基本上是文件)和元数据(有关文件的信息)。与传统文件系统相比,将S3桶(bucket)视为驱动器而不是文件夹更自然。
因此,为了创建一个对象或者我们所说的文件夹(folder),您需要提供带有尾随“/”的文件夹名称,就像这样:
const Obj = new AWS.S3().putObject({
 
  Key: `EmptyFolder/`, // This should create an empty object in which we can store files 
  Bucket: `${bucketName}`,
});

参考: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html


5

亚马逊S3中不存在文件夹。

然而,亚马逊S3管理控制台允许您“创建”文件夹。它通过创建一个Key(文件名)等于“文件夹”名称的零长度对象来实现此操作。这将导致在使用控制台时,或通过S3 API检索CommonPrefixes时,文件夹出现。

一般情况下,您不需要创建文件夹。只需将文件复制到所需位置即可自动完成,例如:

aws s3 cp foo.txt s3://my-bucket/invoices/january/foo.txt

这将导致 invoicesjanuary 文件夹“出现”。如果该目录中的所有对象都被删除,则文件夹将“消失”(因为它们从未存在过)。


拯救了这一天!谢谢。 - Jonathan Martins

0

在S3中,唯一的空选项是存储桶,因此一旦创建了存储桶,您可以在其中添加任何数据,以任何动态文件夹结构。文件夹结构根据您设置的文件存在路径创建,例如bucket_name/folder_name/another_folder_name/file_name,而且这个文件夹可以有N层深度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接