将名称包含尾部斜杠的文件上传到 AWS S3 存储桶

Upload files with name contains trailing slash to AWS S3 bucket

我正在尝试通过 Python 上的 boto3 将一些文件上传到我在 S3 上的存储桶。

这些文件名是网站地址(例如www.google.com/gmail)。

我希望文件名是网站地址,但实际上它创建了一个名称为 "www.google.com" 的文件夹,并在名称为 "gmail"

的上传文件中创建了一个文件夹

我试过在尾部斜杠之前用双斜杠和反斜杠解决它,但是没有用。

有什么方法可以忽略尾部的斜线并上传一个名称为网站地址的文件吗?

谢谢。

您误解了 S3 - 它实际上没有 "folder" 结构。存储桶中的每个对象都有一个唯一的键,通过该键访问对象。

一些 S3 实用程序(包括 AWS 控制台)伪造了一个 "folder" 结构,但这与 S3 的工作方式不太相关。

换句话说,不用担心。只需在其键中创建带有 / 的对象,一切都会如您所愿。

S3 具有扁平结构,没有文件夹。您看到的 "folders" 是 AWS 控制台中的一项功能,可让您更轻松地浏览对象。控制台将根据斜杠前的前缀(如果有)将对象分组 "folder"。

没有什么可以阻止您在 S3 对象键中使用斜线。当你通过 boto 使用 API 时,你可以参考完整的 URL 并且你应该得到对象。

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