【问题标题】:How do I create a bucket and multiple subfolders at once with Boto3 in s3?如何在 s3 中使用 Boto3 一次创建一个存储桶和多个子文件夹?
【发布时间】:2018-07-31 15:11:42
【问题描述】:

我可以使用

在顶层创建一个目录
s3.create_bucket(Bucket=bucket_name)

我想创建一个新的存储桶和子文件夹,所以我的目录结构如下:

-top_level_bucket
    -sub_folder
        -sub_sub_folder

如果不存在的话,我想做这样的事情来一次创建所有东西:

path = 'top_level_bucket/sub_folder/sub_sub_folder'
s3.create_bucket(Bucket=path)

这可能吗?

【问题讨论】:

  • 您混淆了存储桶和对象前缀。请通读Introduction to Amazon S3。看起来您想要一个具有文件夹结构的存储桶。您只需使用该前缀上传单个对象即可轻松创建该前缀。
  • 另外,所谓的“目录树权限”在S3中不存在。如果你想控制谁可以或不能写入某个“前缀”,你需要插入策略来控制它。

标签: python-3.x amazon-s3 boto3 bucket


【解决方案1】:

Amazon S3 中没有“子存储桶”的概念。

Amazon S3 实际上是一个平面对象存储服务。它不使用目录

相反,文件是通过路径上传的,例如:

aws s3 cp file.txt s3://my-bucket/bob/files/file.txt

对象的全名将是:bob/files/file.txt

看起来表现好像有目录,但实际上并不存在。实际上,您可以运行上述命令,它会自动“创建”bobfiles 目录,但它们实际上并不存在!如果您删除该对象,这些目录将消失(因为它们实际上从未存在过!)。

底线:将文件上传到您希望的任何位置,即使存储桶不存在。不用担心提前创建文件夹结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 2021-07-02
    • 2018-06-02
    • 2020-10-28
    • 1970-01-01
    • 2023-02-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多