【问题标题】:Create an empty folder in AWS S3 with aws sdk (nodejs)使用 aws sdk (nodejs) 在 AWS S3 中创建一个空文件夹
【发布时间】:2020-11-02 01:36: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 中创建空的“文件夹”
  • 也无需创建“空”文件夹。只需将文件添加到您想要的任何路径/键中,您就会在上传后找到它。

标签: javascript node.js amazon-web-services amazon-s3


【解决方案1】:

在 Amazon S3 中,存储桶和对象是主要资源,对象存储在存储桶中。 Amazon S3 具有平面结构,而不是您在文件系统中看到的层次结构。但是,为了组织简单,Amazon S3 控制台支持将文件夹概念作为对对象进行分组的一种方式。 Amazon S3 通过为对象使用共享名称前缀(即,对象的名称以通用字符串开头)来实现这一点。对象名称也称为键名。

还有。 S3 不是典型的文件系统。这是一个对象存储。它有桶和对象。桶用于存储对象,对象包括数据(基本上是文件)和元数据(有关文件的信息)。与传统文件系统相比,将 S3 存储桶视为驱动器而不是文件夹更为自然。

因此,为了创建一个对象或我们将其称为文件夹,您需要提供一个带有尾随“/”的文件夹名称,如下所示:

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

【讨论】:

    【解决方案2】:

    Amazon S3 中不存在文件夹。

    但是,Amazon S3 管理控制台允许您“创建”一个文件夹。它通过创建一个长度为零的对象来实现这一点,该对象的键(文件名)等于“文件夹”名称。这会导致在使用控制台或通过 S3 API 检索 CommonPrefixes 时出现该文件夹。

    一般来说,您不需要创建文件夹。只需将文件复制到他们想要的目的地,它就会神奇地工作,例如:

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

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

    【讨论】:

      【解决方案3】:

      s3 中空的唯一选项是存储桶,因此一旦创建了存储桶,您就可以在任何动态文件夹结构中添加任何数据。文件夹结构是根据您为要存在的文件设置的路径创建的,示例可以是 bucket_name/folder_name/another_folder_name/file_name 并且该文件夹最多可以有 N 个深度。

      【讨论】:

        猜你喜欢
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多