使用python boto3将文件上传到亚马逊云子文件夹

J4c*_*4ce 1 python amazon-s3 amazon-web-services boto3

我正在编写一些 python 脚本,我正在尝试使用 boto3 将文件上传到亚马逊云。问题是我想将文件上传到特定的子文件夹...在某些情况下,我需要将文件上传到子文件夹的子文件夹。

我正在尝试这样做:

s3.meta.client.upload_file( "C:\\Users...\\folder1" + "\\" + someFile.txt, "folder/subfolder1/subfolder2", someFile.txt)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Invalid bucket name "...": Bucket name must match the regex "^[a-zA-Z0-9. \-]{1,255}$"
Run Code Online (Sandbox Code Playgroud)

如果我只做文件夹它会起作用,但如果我尝试做folder/subfolder1/subfolder2.

我试图通过文档理解它,但不能。有人可以向我解释一下吗?

谢谢

spg*_*spg 5

s3.meta.client.upload_file()调用的第二个参数应该是存储桶名称,而不是文件路径(参考):

s3.meta.client.upload_file( "C:\Users...\folder1" + "\" + someFile.txt, "your-bucket-name", "someFile.txt")
Run Code Online (Sandbox Code Playgroud)

至于文件夹,您必须使用key(中的第三个参数upload_file())参数确定文件夹结构:

s3.meta.client.upload_file( "C:\Users...\folder1" + "\" + someFile.txt, "your-bucket-name", "some_folder/some_subfoler/someFile.txt")
Run Code Online (Sandbox Code Playgroud)