连接到s3中的特定路径

时间:2019-03-29 03:08:52

标签: python-3.x amazon-web-services amazon-s3 boto3

我正在尝试使用python连接到s3中的特定文件夹 样本:s3://main_folder/sub_folder1/sub_folder2/

# want to enter sub_folder2 - s3://main_folder/sub_folder1/sub_folder2/
import boto3

def connect_to_s3():
    s3_cli = boto3.resourse('s3')
    bucket = s3_cli.Bucket('sub_folder2')
    for b in bucket.objects.all():
        print(b.key)

我收到此错误:

  

引发error_class(parsed_response,operation_name)   botocore.errorfactory.NoSuchBucket:调用ListObjects操作时发生错误(NoSuchBucket):指定的存储桶不存在

1 个答案:

答案 0 :(得分:1)

错误提示:The specified bucket does not exist

这是因为s3_cli.Bucket('sub_folder2')想要一个 Bucket 的名称,但是您已经提供了一个文件夹的名称,但没有告诉它存储桶的名称。

如果只希望对存储桶的一部分执行操作,则可以将filterprefix一起使用:

import boto3

def connect_to_s3():
    s3_cli = boto3.resourse('s3')
    bucket = s3_cli.Bucket('my-bucket')
    for b in bucket.objects.filter(Prefix='sub_folder1/sub_folder2/').all():
        print(b.key)